urql useQuery 的暂停选项不会暂时冻结请求



我正在尝试使用以下代码一次性执行urql-useQuery。但由于某种原因,它在每次重新渲染时都会被调用。

根据文件https://formidable.com/open-source/urql/docs/basics/queries/#pausing-使用查询这个查询最初应该在渲染时暂停,只有在装载时从React.useEffect调用时才应该执行。

const [{ fetching, data, error }, reExecute] = useQuery({
query: INITIAL_CONFIG_QUERY,
pause: true
});
React.useEffect(() => {
reExecute();
}, []);

使用urql一次性执行查询的最佳方式是什么?

Urql维护人员,我认为如果组件继续重新安装,就会发生额外的事情。此挂钩不应使包装部件重新安装。

也就是说,您总是可以使用useClient钩子来获取urql客户端,然后在该钩子中使用client.query().toPromise()并使用返回的结果。

在您的情况下,这可能是:

const MyComponent = () => {
const client = useClient();
useEffect(() => {
client.query(
INITIAL_CONFIG_QUERY
).toPromise().then(result => /* do something */)
}, [])
}

这可能是一个urlq错误,但也可能是您的组件在每次父组件重新发送时都被卸载和重新装载。

要对此进行测试,请添加:

React.useEffect(() => {
console.log("Component was mounted.");
}, []);

并查看console.log语句是否被打印多次。

相关内容

  • 没有找到相关文章

最新更新