react-apollo - RN Apollo Client 3.0 - 使用合并功能处理重新获取
问题描述
我最近正在从 2.0 迁移到 apollo 客户端 3.0。
我有一个需要获取更多和分页的查询。
通过做,
const cache = new InMemoryCache({
typePolicies: {
Query: {
fields: {
getData: {
// Handles incoming data
keyArgs: [],
merge(existing ={/*some default object fields*/}, incoming) {
return {
...existing,
pageInfo: incoming.pageInfo,
edges: [...existing.edges, ...incoming.edges],
};
},
},
},
},
},
});
我能够处理初始查询/获取和分页。但是,我在如何处理重新获取方面遇到了麻烦。使用此合并功能,重新获取的数据只需与现有缓存数据连接。我无法找到如何在合并功能中正确处理这个问题。
如果有人知道如何处理这个问题,请告诉我。
解决方案
我能够通过观察 args 来解决问题。
const cache = new InMemoryCache({
typePolicies: {
Query: {
fields: {
getData: {
// Handles incoming data
keyArgs: [],
merge(existing ={/*some default object fields*/}, incoming, {args}) {
if(args && !args.after){
// Initial fetch or refetch
return incoming;
}
// Pagination
return {
...existing,
pageInfo: incoming.pageInfo,
edges: [...existing.edges, ...incoming.edges],
};
},
},
},
},
},
});
推荐阅读
- c# - 未调用非静态天蓝色函数
- java - java - 如何使用restful jersey实现从Java中现有的Web服务类调用另一个类
- php - 有没有办法在许多页面 php 中显示徽标?
- ios - iOS App 如何提交 Google OAuth 验证以使用 Google 日历
- angular - httpClient.get 升级到 Angular 8 后不调用服务器
- selenium - WebDriverWait 抛出 Timeout 而不是 NoSuch ElementException
- c# - 使用ffmpeg并排放置两个视频并将其下载为一个文件
- c++ - CMake 为 VS 项目生成循环依赖项,但不生成文件。如何避免?
- azure - Azure Maps API - 按类型限制
- git - 在 git log 中结合 --grep 和 -G 选项