使用 apollo useQuery 时有没有办法禁用 apollo-link-dedup?
Posted
技术标签:
【中文标题】使用 apollo useQuery 时有没有办法禁用 apollo-link-dedup?【英文标题】:Is there a way to disable apollo-link-dedup when using apollo useQuery? 【发布时间】:2020-02-01 22:15:23 【问题描述】:概述
我有一个渲染两个子组件的组件。子组件使用 apollo 的 useQuery
向服务器发出请求。问题是因为使用apollo-client
时包含apollo-link-dedup
,所以只有一个请求被发送到服务器。
我尝试将上下文设置为 forceFetch: true
指定的 here 但这似乎不适用于钩子。
这是查询:
// Generated query from @graphql-codegen/cli
import useGetUploadUrlsQuery from 'types/graphql'
useGetUploadUrlsQuery(
fetchPolicy: 'network-only',
context:
forceFetch: true,
,
)
注意:传入唯一变量会绕过重复数据删除。任何人都可以提出的任何不那么老套的解决方案/解决方法都会有所帮助。
谢谢!
【问题讨论】:
如果请求相同且同时发生,为什么要触发两个单独的请求? 嘿@DanielRearden,这是因为每个查询都返回一个唯一的上传 URL,在这种情况下,我有两个上传表单都需要一个唯一的上传 URL。 有趣的用例。似乎是文档问题。请参阅下面的答案。 嘿@DanielRearden,添加deduplication: false
似乎不起作用。我也根据您链接的文档尝试了queryDeduplication: false
,但这也不起作用
【参考方案1】:
这可能是文档问题。我认为传递给context
的正确密钥是deduplication
,其值为false
:
useGetUploadUrlsQuery(
fetchPolicy: 'network-only',
context:
queryDeduplication: false,
,
)
注意here。 apollo-link-dedup
如自述文件中所指示的那样“默认包含”并不是真的——逻辑可能是,但链接本身不是。
【讨论】:
以上是关于使用 apollo useQuery 时有没有办法禁用 apollo-link-dedup?的主要内容,如果未能解决你的问题,请参考以下文章
apollo 的 useQuery 数据在 client.resetStore() 之后没有更新
Apollo useQuery 钩子不会使用 writeQuery() 方法从缓存中获取更新。没有看到错误
如何从 Apollo 客户端的 useQuery 获取响应头
@apollo/client 反应钩子 useQuery() 数据未定义