如何解决反应原生 ApolloClint fetchMore 触发另一个 useQuery=>refetch
我有 2 个不同的 useQuery。对于聊天和用户,我使用 offsetBase 分页进行无限滚动。当为用户运行 loadMore 时,它会触发聊天查询重新获取。 合并时我的缓存没有出现的另一个问题。
缓存
lastChats: {
merge(existing,incoming,{ readField }){
let merged = existing ? existing.slice(0) : [];
const existingIdSet = new Set(
merged.map(messa=>readField('_id',messa))
)
incoming = incoming.filter(messa=>{
return !existingIdSet.has(readField('_id',messa))
})
return [...merged,...incoming]
}
},
fetchMore 方法
const loadMoreChats = () =>{
if(hasNext){
fetchMore({
variables:{
userId,offset: data.lastChats.length,}
}).then(({data})=>{
if(data.lastChats.length===0){
sethasNext(false)
}
})
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。