我使用分页容器实现了分页系统。它适用于一个问题。
当我调用 loadMore 函数来获取新节点时,中继从服务器获取节点并添加到旧节点。但我想删除旧节点,只想显示新节点。
例如 $first = 10
当页面第一次加载时,我得到了 10 个节点,在 loadMore 之后,我得到了 20 个节点。但我只想显示新获取的 10 个节点。
我使用了这个分页示例
在 loadMore 操作后,我找不到删除旧节点的方法。
我知道中继分页只打算使用无限滚动,我只是想知道也许有办法解决这个问题。
Hacky/easy 解决方案是始终映射最后 10 个项目。
另一种解决方案是检查中继存储,ConnectionHandler
并手动从存储中删除您不想要的边缘。
在https://relay.dev/docs/en/relay-storedeleteNode
中查看有关如何使用中继存储的更多信息。
更好的解决方案是创建一个可重新获取的容器并改用游标分页,这样每次通过设置游标和连接上的参数来获取下一个 10 项时。这样你就必须查询pageInfo
并手动检查hasNextPage。
同样通过这种方式,您将能够进行双向分页(向前和向后分页)。
有关基于光标的分页的更多信息: