【发布时间】:2023-01-09 06:01:49
【问题描述】:
我的应用程序有一个组织列表,我的 UI 中有用于单独删除它们的按钮。
我希望列表更新并删除已删除的组织,但这对我不起作用。
我已经设置了这样的缓存交换,在这里我(冗余地)尝试了 Urql 文档中的两种缓存失效方法:
const cache = cacheExchange({
updates: {
Mutation: {
delOrg(_result, args, cache, _info) {
// Invalidate cache based on type
cache.invalidate({ __typename: 'Org', id: args.id as number });
// Invalidate all fields
const key = 'Query';
cache
.inspectFields(key)
.filter((field) => field.fieldName === 'allOrgs')
.forEach((field) => {
cache.invalidate(key, field.fieldKey);
});
}
}
}
});
返回组织列表的 GraphQL 查询如下所示:
query AllOrgs {
allOrgs {
id
name
logo {
id
url
}
}
}
删除组织的突变看起来像:(它返回一个布尔值)
mutation DelOrg($id: ID!) {
delOrg(id: $id)
}
cache.invalidate 似乎什么也没做。我已经使用调试插件以及console.log检查了缓存。我可以看到缓存中的记录,它们不会被删除。
我在用
"@urql/exchange-graphcache": "^4.4.1",
"@urql/svelte": "^1.3.3",
【问题讨论】: