在阿波罗客户端中的useQuery中使用fetchPolicy ='cache-and-network',而不更新fetchMore上的缓存

时间:2020-05-11 10:36:42

标签: graphql apollo apollo-client graphql-js

我正在将apollo-client用于我的graphql设置。我有一个分页调用,为此我使用了fetchMore挂钩返回的useQuery函数。 在fetchMore函数中,我使用其updateQuery参数将新获取的数据附加到缓存中的结果中。

fetchMore({
  variables: {
    request: fetchMorerequest,
  },
  updateQuery: (previousResult, { fetchMoreResult }) => {
   const updatedResults = update(previousResult, {
      list: {
        data: { $push: fetchMoreResult.list.data },
        hasMore: { $set: fetchMoreResult.list.hasMore },
      },
    });

  return updatedResults;
  },
});

这对我来说很好。

现在,我将fetchPolicy从默认的cache-first更改为cache-and-network。 更改之后,我从updatedResults函数返回的updateQuery反映在我的缓存中,但没有返回到我的组件中。我可以在Chrome的阿波罗扩展程序的缓存中看到更新的项目。但不要让它们进入我的组件。

任何想法在这里可能是个问题吗?我想念什么吗?请帮忙。

1 个答案:

答案 0 :(得分:1)

在您的 nextFetchPolicy: 'cache-first' 或当前查询选项中设置 defaultOptions

read more here