不推荐使用 fetchMore 的 updateQuery 后如何处理通用分页

问题描述 投票:0回答:1

我目前正在使用 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 分页,而不必为我们关心的每种类型制定字段策略?

提前致谢!

reactjs graphql apollo apollo-client react-apollo
1个回答
0
投票

也许它会帮助某人:

删除关于将 options.updateQuery 函数传递给 fetchMore 的烦人的弃用警告。

将支持更新查询

© www.soinside.com 2019 - 2024. All rights reserved.