首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Apollo客户端在分页时发生突变后重新获取

Apollo客户端在分页时发生突变后重新获取
EN

Stack Overflow用户
提问于 2021-09-25 16:14:19
回答 1查看 670关注 0票数 1

使用"@apollo/client": "3.2.9"。我有一个带有前10个项目的页面1,我正在打电话给服务器来获取前10个项目,工作正常。我调用下一个页面,这一次使用了一个额外的变量(类似于skip),接下来的10个项目都是fetch ok。

下一步,我做一个变异来添加一个新项目(这将被添加为页面1上的第一个项目)。我正在做一个突变,并且我正在使用

代码语言:javascript
运行
复制
refetchQueries: ({ data }) => [
  {
    query: GET_MY_ITEMS,
    variables: {
      where: { type: { eq: data.updateMyItem.myType } },
    },
  },
],
awaitRefetchQueries: true,

而且我还重定向到了第一页。这可以正常工作,并且第一页上的项目会按预期填充到页面顶部的新项目中。

问题发生在返回到第二个页面时,因为它仍然存在于缓存中。正因为如此,第二页上的项目1仍然与以前相同,而实际上第二页上的项目1现在应该是突变前第一页上的项目10。

我希望我可以在没有变量的情况下从缓存中清除特定查询的所有查询结果(假设我不知道skip的值是什么)。如果可能的话,我还是不希望完全禁用这个查询的缓存。

EN

回答 1

Stack Overflow用户

发布于 2021-10-02 18:06:43

我很不情愿地使用了不同的fetch策略来确保数据是最新的。

代码语言:javascript
运行
复制
useLazyQuery(GET_MY_ITEMS, { fetchPolicy: 'cache-and-network' });

这意味着我不一定需要在突变后更新列表,但这感觉不太理想,因为每次分页都会导致对服务器的调用,我更愿意在大多数时间使用缓存,只有在需要时才调用服务器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69327941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档