当输入变量相同时,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() - 如果响应相同,则忽略“refetch”
在@apollo/react-hooks 的 useQuery 钩子中忽略了跳过参数
当来自 Apollo useQuery 挂钩的“数据”返回 useMemo 所依赖的“数据”的新值时,useMemo 未运行