与我们一起参与10月8日至10日在纽约市的活动,了解有关 GraphQL Federation 和 API 平台工程最新技巧、趋势和新闻。参加2024年在纽约市的 GraphQL 峰会
文档
免费开始

多查询分页


GraphQLQueryPager支持多-查询分页。这意味着您可以分别使用不同的查询获取数据的初始页面和获取后续页面的数据。

为了使用多-查询分页,您必须在GraphQLQueryPager中进行配置以支持多个查询。建议使用适当的便捷初始化器创建GraphQLQueryPager实例。支持多-查询分页的初始化器将同时具有extractInitialPageInfoextractNextPageInfo函数。

以下示例中,我们将初始化一个使用正向分页的GraphQLQueryPager

let initialQuery = MyQuery(first: 10, after: nil)
let pager = GraphQLQueryPager(
client: client,
initialQuery: initialQuery,
extractInitialPageInfo: { initialQueryData in
// Extract a `CursorBasedPagination.Forward` instance from the initial query's `Data`
CursorBasedPagination.Forward(
hasNext: initialQueryData.values.pageInfo.hasNextPage ?? false,
endCursor: initialQueryData.values.pageInfo.endCursor
)
},
extractNextPageInfo: { paginatedQueryData in
// Extract a `CursorBasedPagination.Forward` instance from the paginated query's `Data`
CursorBasedPagination.Forward(
hasNext: paginatedQueryData.values.pageInfo.hasNextPage ?? false,
endCursor: paginatedQueryData.values.pageInfo.endCursor
)
},
pageResolver: { page, paginationDirection in
// As we only want to support forward pagination, we can return `nil` for reverse pagination
switch paginationDirection {
case .next:
return MyPaginatedQuery(first: 10, after: page.endCursor ?? .none)
case .previous:
return nil
}
}
)

本例演示了如何创建一个 GraphQLQueryPager,该查询使用独立的查询来获取数据的初始页以及获取后续数据页。 GraphQLQueryPager 被配置为使用基于前进 光标 的分页。使用 extractInitialPageInfoextractNextPageInfo 闭包分别从数据初始页和下一页中提取分页信息。 pageResolver 闭包用于根据 CursorBasedPagination.Forward 实例解决下一页的查询。

可以有相同的方式使用 GraphQLQueryPager 实例,就像使用单查询分页器。 loadNextPage 方法将自动使用 pageResolver 闭包来获取下一页数据。

上一页
方向性分页
下一页
测试模拟
评价文章评价在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.,即 Apollo GraphQL。

隐私政策

公司