Apollo Client中的分页
概述
GraphQL 允许您从您的图中精确获取需要的 字段,没有不必要的开销。这有助于保持网络响应小且快速。
然而, GraphQL 并不会自动 保证 响应小。这在您 查询 包含 列表 的字段时表现得尤为明显。列表可以包含无限数量的元素,这可能导致看似简单的 查询 给出巨大的响应:
query GetBookTitles {books {title}}
如果你的 图 包含数千或数百万本书,这个 查询 可能返回 比你需要的数据多得多的数据。为了解决这个问题, GraphQL 服务器 可以对他们的列表字段进行 分页。
当客户端查询分页列表 字段时,服务器只返回列表的部分(或“页面”)元素。客户端 查询 包括 参数 用于指示 服务器应返回哪个页面:
此图说明了 基于偏移 的分页,其中客户端基于列表中的绝对索引(偏移
)和要返回的最大元素数(限制
)请求一个页面。
服务器可以为特定的列表 字段 使用多种不同的分页策略:基于偏移、游标 基于的、基于页码的、向前的、向后的等等。每种策略都需要一组不同的 参数。因为这些策略在 不同情况下可能会有用,Apollo 或 GraphQL 规范都没有定义一个规范分页策略。
Apollo 客户端方法
而不是推荐一种特定的分页策略, Apollo 客户端 提供灵活的缓存 API,帮助你合并分页列表 字段 的查询结果,无论你的 GraphQL 服务器 使用的是哪种分页策略。 由于你可以使用无状态函数表示这些自定义分页策略,你可以为每个使用相同策略的列表字段重用同一个函数。
准备好开始分页了吗?先了解 核心分页 API。