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

Ank*_*yan 7 javascript reactjs graphql react-hooks urql

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

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

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

React.useEffect(() => {
  reExecute();
}, []);
Run Code Online (Sandbox Code Playgroud)

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

小智 5

Urql 维护者在这里,我假设如果组件不断重新安装,就会发生一些额外的事情。这个钩子不应该让包装组件重新安装。

话虽如此,您始终可以使用useClient钩子来获取 urql-client,然后client.query().toPromise()在该钩子中使用并使用返回的结果。

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

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