我目前正在使用 apollo graphql 客户端从后端获取所有数据。我的 React 应用程序有许多页面需要获取分页的事物列表,因此我依靠
updateQuery
api 中的(现已标记为已弃用)fetchMore
函数来处理分页。我创建了一个辅助函数,您可以在其中传递 useQuery 挂钩结果,该函数将为您处理 fetchMore/updateQuery 内容,以便它可以将下一页结果附加到现有列表中。当我们想要对列出的数据进行更多查询时,这使得将来使用和添加新的分页列表变得更加容易。
更新查询文档:https://www.apollographql.com/docs/react/v2/data/pagination/#offset-based
const fetchNextPage = React.useCallback((variables: <GenericType>) => {
...
// fetch the next page:
fetchMore({
variables: {
...variables,
},
updateQuery: (prev, { fetchMoreResult }) => {
prev.concat(fetchMoreResult);
}),
...
return fetchNextPage // exported out for consumption
但是,查看文档和在线建议,似乎在
updateQuery
被弃用后,继续进行分页的唯一方法是定义字段策略并使用 InMemoryCache 中的 merge
函数。 https://www.apollographql.com/docs/react/pagination/core-api/#defining-a-field-policy
虽然我可以做到这一点,但更新列出项目的每个现有查询所需的工作量(更不用说添加新列表查询所需的样板代码)是相当乏味和不必要的。是否可以定义一种通用的方法来执行这些 fetchMore 分页,而不必为我们关心的每种类型制定字段策略?
提前致谢!