React Apollo更新客户端cache.identity



我要做的事情:

使用突变编辑电子邮件值并重新呈现页面。刷新时数据会更改,但缓存也需要更改,我在修改缓存时遇到了问题。

在这里发布之前,我已经阅读/查看了Legwork:

突变文件

关于更新缓存的文档

获取对象的自定义ID

我认为问题是:

我使用的GraphQL数据库没有实现正确的ID,我无法更改这一点。我将不得不修改ROOT_QUERY缓存并以艰难的方式更新它。由于我的代码现在是,它正在读取我想使用的ID(电子邮件(,作为未定义。错误消息简单地读作";未处理的拒绝(错误(:无法读取未定义"的属性"email";指向节点模块中的函数,而不是我的函数。

我的组件代码可以在这里找到完整的,但我会指出我认为确凿的证据最终在哪里

我试着尽可能多地检查,但无法判断我是否正确地到达了目的地。我看了其他堆栈帖子,youtube,并试图联系一些不和谐的频道,结果碰壁了。任何帮助和解释都将非常好。

发现问题出在缓存上。根本不需要识别!我只需要修复index.tsx 上的InMemoryCache

const client = new ApolloClient({
uri: "http://localhost:8080/graphql",
cache: new InMemoryCache({
typePolicies: {
People: {
keyFields: ["email"],
},
},
}),
});

这使得获取正确索引变得更加容易。

最新更新