使用"@apollo/client": "3.2.9"
。我有一个带有前10个项目的页面1,我正在打电话给服务器来获取前10个项目,工作正常。我调用下一个页面,这一次使用了一个额外的变量(类似于skip
),接下来的10个项目都是fetch ok。
下一步,我做一个变异来添加一个新项目(这将被添加为页面1上的第一个项目)。我正在做一个突变,并且我正在使用
refetchQueries: ({ data }) => [
{
query: GET_MY_ITEMS,
variables: {
where: { type: { eq: data.updateMyItem.myType } },
},
},
],
awaitRefetchQueries: true,
而且我还重定向到了第一页。这可以正常工作,并且第一页上的项目会按预期填充到页面顶部的新项目中。
问题发生在返回到第二个页面时,因为它仍然存在于缓存中。正因为如此,第二页上的项目1仍然与以前相同,而实际上第二页上的项目1现在应该是突变前第一页上的项目10。
我希望我可以在没有变量的情况下从缓存中清除特定查询的所有查询结果(假设我不知道skip
的值是什么)。如果可能的话,我还是不希望完全禁用这个查询的缓存。
发布于 2021-10-02 18:06:43
我很不情愿地使用了不同的fetch策略来确保数据是最新的。
useLazyQuery(GET_MY_ITEMS, { fetchPolicy: 'cache-and-network' });
这意味着我不一定需要在突变后更新列表,但这感觉不太理想,因为每次分页都会导致对服务器的调用,我更愿意在大多数时间使用缓存,只有在需要时才调用服务器。
https://stackoverflow.com/questions/69327941
复制相似问题