微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

反应原生 ApolloClint fetchMore 触发另一个 useQuery=>refetch

如何解决反应原生 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 举报,一经查实,本站将立刻删除。