【问题标题】:Is there a way to disable apollo-link-dedup when using apollo useQuery?使用 apollo useQuery 时有没有办法禁用 apollo-link-dedup?
【发布时间】: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,但这也不起作用

标签: reactjs react-apollo apollo-client react-apollo-hooks


【解决方案1】:

这可能是文档问题。我认为传递给context 的正确密钥是deduplication,其值为false

useGetUploadUrlsQuery({
  fetchPolicy: 'network-only',
  context: {
   queryDeduplication: false,
  },
})

注意hereapollo-link-dedup 如自述文件中所指示的那样“默认包含”并不是真的——逻辑可能是,但链接本身不是。

【讨论】:

    猜你喜欢
    • 2018-11-10
    • 2020-10-30
    • 2020-10-19
    • 2021-02-09
    • 1970-01-01
    • 2023-04-06
    • 2018-09-05
    • 2020-04-13
    • 2018-07-23
    相关资源
    最近更新 更多