pagination - 中继分页 - 光标更改后从存储中删除旧节点
问题描述
我使用分页容器实现了分页系统。它适用于一个问题。
当我调用 loadMore 函数来获取新节点时,中继从服务器获取节点并添加到旧节点。但我想删除旧节点,只想显示新节点。
例如 $first = 10
当页面第一次加载时,我得到了 10 个节点,在 loadMore 之后,我得到了 20 个节点。但我只想显示新获取的 10 个节点。
我使用了这个分页示例
在 loadMore 操作后,我找不到删除旧节点的方法。
我知道中继分页只打算使用无限滚动,我只是想知道也许有办法解决这个问题。
解决方案
Hacky/easy 解决方案是始终映射最后 10 个项目。
另一种解决方案是检查中继存储,ConnectionHandler
并手动从存储中删除您不想要的边缘。
在https://relay.dev/docs/en/relay-storedeleteNode
中查看有关如何使用中继存储的更多信息。
更好的解决方案是创建一个可重新获取的容器并改用游标分页,这样每次通过设置游标和连接上的参数来获取下一个 10 项时。这样你就必须查询pageInfo
并手动检查hasNextPage。
同样通过这种方式,您将能够进行双向分页(向前和向后分页)。
有关基于光标的分页的更多信息:
推荐阅读
- javascript - 角度的导入和导出
- python - 在 pandas groupby 上使用 map 或 applymap
- actions-on-google - CameraStream 特征不接受 PIN 验证
- google-maps - 为什么我的自定义 Google 地图不再起作用?
- javascript - 当前 div 的 LocalStorage?
- ssis - ssis 中 ODBC 连接的更新表
- excel - 如何修复主键中的重复值?
- xcode - 当我将反应原生 iOS 应用程序上传到 App Store Connect 时,我得到了空版本
- swift - Swift:Twilio 发送短信,需要“收件人”电话号码
- google-bigquery - Airflow 如何将 API 请求结果写入 BigQuery 表或 GCS 文件