graphql - 在 Apollo GraphQL 客户端中突变成功后重新获取查询
问题描述
如果我有两个功能,第一个是获取文档,第二个是删除文档。我只想在删除文档成功后更新缓存
功能如下。
const [loadDocuments] = useLazyQuery(GET_PRODUCTS, {
onCompleted({ getProducts: data }) {
setRows(data)
},
variables: getVariables(),
})
const [loadDelete] = useMutation(REMOVE_PRODUCTS, {
update(cache, data) {
// ...
},
variables: { ids: selected.join(',') },
})
我试过了。
1. 变异成功后调用loadDocuments()。
const [loadDelete] = useMutation(REMOVE_PRODUCTS, {
update(cache, data) {
loadDocuments()
},
})
===>loadDocuments
没有被解雇。我不知道为什么,它没有被解雇。
2.添加refetchQueries删除Mutation
const [loadDelete] = useMutation(REMOVE_PRODUCTS, {
update(cache, data) {
// ...
},
variables: { ids: selected.join(',') },
refetchQueries: () => [
{
query: GET_PRODUCTS,
variables: getVariables(),
},
],
})
===> 它触发查询GET_PRODUCTS
,也许服务器响应一些东西。但我不知道在哪里捕捉它来更新状态。
我阅读了一些在突变后更新缓存的文章。他们使用readQuery
和writeQuery
。但就我而言,我想要更简单的方法。如果有表格,表格应该每页显示 20 行。然后,如果我删除 2 行,并删除 2 行的缓存数据,则只剩下 18 项。
无论如何,我必须再拿 2 件物品。所以我认为即使我使用readQuery
and writeQuery
,我也应该再次获取 2 行。所以我只想获取一次最新数据。然后感觉更简单了。在这种情况下,最佳实践是什么,有没有办法让它变得简单?
解决方案
推荐阅读
- android - 如何使用 viewmodel 单例进行活动?
- post - 延迟 vegeta 请求
- vb.net - 更新表中的所有更改
- nvm - 如何使用 nvm 找到当前激活的版本?
- python - 在python中读取csv文件时语法无效
- react-native - React-Native 生成 ios 和 android 文件夹时,我可以更改哪些部分?
- php - Laravel 5.2 - 从数据库中删除
- c# - 如何使用数据注释在excel中设置单个列的列宽
- python - 给定二维列表的单个值减少列表
- amazon-web-services - 如何只允许 1 个第三方网站访问我的 S3 对象?