阿波罗:graphql错误后如何处理缓存?

时间:2020-06-22 09:44:58

标签: reactjs graphql apollo react-apollo

我知道成功突变后(使用update)如何更新缓存。 我知道如何自行处理错误(在客户端上使用try/catch和全局onError配置。)

发生变异错误后,如何更新缓存? 我需要这样做是因为我正在处理缓存中的每个字段加载字段(作为本地@client字段),并且我希望在突变失败后将它们设置为false(并返回前一个字段的值(如果需要)。您是否有更好的概念来处理按字段加载指示器?

我目前正在使用withApollo来获取客户端,然后使用client.cache.writeData来手动操作缓存。可以,但是我遇到了渲染问题-我可以在控制台/开发人员工具中看到更改,但是在实际元素中看不到,并且在元素中进行了另一处更改后,它会更新加载值。

还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

您应该使用client.writeData而不是cache.writeData -后者不会触发UI中的反应式更新,而前者却会触发。迁移到客户端的3.0版后,您将需要使用writeQuerywriteFragment,因为writeData将被删除,因此您可以考虑改为使用这两种方法之一。