当输入变量相同时,Apollo useQuery 不会进行网络调用

Posted

技术标签:

【中文标题】当输入变量相同时,Apollo useQuery 不会进行网络调用【英文标题】:Apollo useQuery is not making a network call when the input variable is same 【发布时间】:2021-04-11 08:05:09 【问题描述】:

我有一个高阶组件,它接受一个名为“名称”的道具变量输入。在 HOC 内部,我将“名称”作为输入传递给 useQuery。

如果名称的值发生变化,useQuery 会访问后端 API 并获取新结果,但如果值保持不变,则 useQuery 不会进行网络调用。 HOC 被重新渲染,但没有 n/w 调用。我得到了与第一次相同的响应数据(当“名称”被更新时)。我也尝试了获取策略“无缓存”和“仅限网络”,但没有运气。请帮忙。我无法在网上找到任何解决方案。谢谢!

【问题讨论】:

显示详情?代码? 【参考方案1】:

这是因为 Apollo 缓存了这些数据。我相信您需要转到no-cache 而不是“无缓存”。 https://www.apollographql.com/docs/react/caching/advanced-topics/

否则,您正在寻找可以按需调用的 refetch

【讨论】:

我尝试将策略设为“无缓存”(抱歉打错字,我已更新问题)。 useQuery 在变量更改之前不会发出新的网络请求。即使我停止服务器,我也看到相同输入变量的数据没有改变。 @AmanDeepSharma 我认为你应该添加你的 useQuery 钩子,如果可能的话,你应该添加整个组件 没看懂,应该有办法在输入变量不变的情况下调用useQuery(n/w call)。 您正在寻找重新获取。 const refetch = useQuery(QUERY, variables: ...)

以上是关于当输入变量相同时,Apollo useQuery 不会进行网络调用的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将变量传递给 apollo useQuery?

Apollo useQuery() - 如果响应相同,则忽略“refetch”

在@apollo/react-hooks 的 useQuery 钩子中忽略了跳过参数

当来自 Apollo useQuery 挂钩的“数据”返回 useMemo 所依赖的“数据”的新值时,useMemo 未运行

如何防止 Apollo 客户端 useQuery 中的错误传播?

使用 apollo useQuery 时有没有办法禁用 apollo-link-dedup?