在 apollo-client 的 useQuery 中使用 fetchPolicy='cache-and-network' 不会更新 fetch 上的缓存更多

Posted

技术标签:

【中文标题】在 apollo-client 的 useQuery 中使用 fetchPolicy=\'cache-and-network\' 不会更新 fetch 上的缓存更多【英文标题】:Using fetchPolicy='cache-and-network' in useQuery in apollo-client not updating cache on fetchMore在 apollo-client 的 useQuery 中使用 fetchPolicy='cache-and-network' 不会更新 fetch 上的缓存更多 【发布时间】:2020-08-26 20:59:36 【问题描述】:

我正在使用apollo-client 进行我的graphql 设置。我有一个分页调用,我使用useQuery 钩子返回的fetchMore 函数。 在fetchMore 函数中,我使用它的updateQuery 参数将新获取的数据附加到缓存中的结果中。

fetchMore(
  variables: 
    request: fetchMorerequest,
  ,
  updateQuery: (previousResult,  fetchMoreResult ) => 
   const updatedResults = update(previousResult, 
      list: 
        data:  $push: fetchMoreResult.list.data ,
        hasMore:  $set: fetchMoreResult.list.hasMore ,
      ,
    );

  return updatedResults;
  ,
);

这对我来说很好用。

现在,我已将我的 fetchPolicy 从默认的 cache-first 更改为 cache-and-network。 之后更改我从updateQuery 函数返回的updatedResults 将反映在我的缓存中,但不会在我的组件中返回。我可以在 chrome 的 apollo 扩展中看到缓存中更新的项目。但没有将它们放入我的组件中。

知道这里有什么问题吗?我错过了什么吗?请帮忙。

【问题讨论】:

【参考方案1】:

在您的defaultOptions 或当前查询选项中设置nextFetchPolicy: 'cache-first'

read more here

【讨论】:

以上是关于在 apollo-client 的 useQuery 中使用 fetchPolicy='cache-and-network' 不会更新 fetch 上的缓存更多的主要内容,如果未能解决你的问题,请参考以下文章

为啥 apollo-client 的 GraphQL 查询不出现在 Chrome 的 XHR 网络过滤器中?

使用 Apollo-Client 重新获取查询会引发错误

设置 apollo-client 标头时出现 NetworkError

无法理解 apollo-client 中解析器的使用

使用 apollo-client + firebase auth 刷新令牌

Apollo-client (react) - 更新创建突变 - “在对象 (ROOT_QUERY) 上找不到字段 Fund()”