多查询分页
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 闭包来获取下一页数据。