如何有条件地调用 useQuery 钩子?

Posted

技术标签:

【中文标题】如何有条件地调用 useQuery 钩子?【英文标题】:How to call useQuery hook conditionally? 【发布时间】:2020-08-11 18:36:00 【问题描述】:

因为Rules of Hooks,不应该有条件地调用钩子。那么如何使用useQuery 有条件地获取数据呢?例如,假设我想在功能组件中获取数据,但前提是 someState === someValue?即我想避免在任何条件之前调用useQuery(),因为此时获取数据没有意义。

【问题讨论】:

【参考方案1】:

在 apollo 的 documentation 中,它显示有一个可以添加的跳过选项: useQuery(query,skip:someState===someValue)

否则,您也可以useLazyQuery,如果您想在希望运行时而不是立即运行查询。

【讨论】:

以上是关于如何有条件地调用 useQuery 钩子?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 useQuery 钩子在其他钩子中填充状态?

如何将 React 钩子(useContext、useEffect)与 Apollo 反应钩子(useQuery)结合起来

Apollo 客户端没有读取使用 useQuery 钩子传入的变量

如何使用 Apollo 客户端 useQuery 钩子防止不必要的重新获取?

为啥我能够有条件地以一种方式调用钩子,而不能以另一种方式调用?

在使用 graphql 的 useQuery 获取的数据更新 useEffect 钩子内的状态变量时防止无限渲染