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

使用graphql缓存跟踪基于光标的分页中的页码

如何解决使用graphql缓存跟踪基于光标的分页中的页码

我有一个基于 GQL 游标的分页,并使用 apollo 客户端库在 react 中实现了前端。这是我当前的服务器响应,在请求下一页上一页时一切正常。

{
  "data": {
    "users": {
      "pageInfo": {
        "hasNextPage": true,"hasPrevIoUsPage": false,"startCursor": "1","endCursor": "6"
      },"edges": [
        {
          "node": {
            "id": "1"
          }
        },{
          "node": {
            "id": "6"
          }
        }
      ]
    }
  }
}

我遇到的问题是;

我有一个页面计数下拉列表,20、50 和 100,它决定了要在页面显示的记录数。所以,如果我从每页 50 条记录开始,假设第 74 条记录在第 2 页,当我切换到每页 20 条记录时,阿波罗客户端不会请求服务器,而是从缓存加载数据。这很好,因为缓存有助于避免额外的请求,但现在我不知道 74 属于哪个页面记录。

我想要的解决方案;

我正在寻找一个可以在 react 中处理分页解决方案/库,这也考虑到了服务器不会总是被联系的事实,因此应该跟踪页面

解决方法

因此,在深入研究 apollo 和 graphql 游标之后,没有一种方法可以“猜测”特定页面的起始游标,因此当缓存处于空闲状态时,分页实际上不可能放置得很好正在播放中。

出于这个原因,我不得不使用以下内容禁用此特定查询的缓存

const { loading,error,data } = useQuery(GET_GREETING,{
    variables: { ... },fetchPolicy: "network-only"
});

这将确保查询总是从网络中获取并且不被缓存。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。