Apollo:graphql 错误后如何处理缓存?

Apollo: How to handle cache after graphql error?

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

变异出错后如何更新缓存? 我需要这个,因为我正在处理缓存中的每个字段加载字段(作为本地 @client 字段),并且我想在突变失败后将它们设置为 false(以及 return 该字段的先前值(如果需要)。您对处理每个字段加载指示器有更好的概念吗?

我目前正在使用 withApollo 获取客户端,然后使用 client.cache.writeData 手动操作缓存。它有点工作,但我遇到了渲染问题 - 我可以看到 console/developer 工具中的变化,但不是实际元素中的变化,并且在元素发生另一次变化后它采用更新的加载值。

还有其他方法吗?

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