多查询分页
GraphQLQueryPager
支持多-查询分页。这意味着您可以分别使用不同的查询获取数据的初始页面和获取后续页面的数据。
为了使用多-查询分页,您必须在GraphQLQueryPager
中进行配置以支持多个查询。建议使用适当的便捷初始化器创建GraphQLQueryPager
实例。支持多-查询分页的初始化器将同时具有extractInitialPageInfo
和extractNextPageInfo
函数。
以下示例中,我们将初始化一个使用正向游标分页的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 paginationswitch paginationDirection {case .next:return MyPaginatedQuery(first: 10, after: page.endCursor ?? .none)case .previous:return nil}})
本例演示了如何创建一个 GraphQLQueryPager
,该查询使用独立的查询来获取数据的初始页以及获取后续数据页。 GraphQLQueryPager
被配置为使用基于前进 光标 的分页。使用 extractInitialPageInfo
和 extractNextPageInfo
闭包分别从数据初始页和下一页中提取分页信息。 pageResolver
闭包用于根据 CursorBasedPagination.Forward
实例解决下一页的查询。
可以有相同的方式使用 GraphQLQueryPager
实例,就像使用单查询分页器。 loadNextPage
方法将自动使用 pageResolver
闭包来获取下一页数据。