在 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 标头时出现 NetworkError
使用 apollo-client + firebase auth 刷新令牌
Apollo-client (react) - 更新创建突变 - “在对象 (ROOT_QUERY) 上找不到字段 Fund()”