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 版后,您将需要使用 writeQuery
或 writeFragment
,因为 writeData
将被删除,因此您可以考虑改用这两种方法之一。
我知道如何在成功突变后更新缓存(使用update
)。
我知道如何自己处理错误(在客户端使用 try/catch
和全局 onError
配置)。
变异出错后如何更新缓存?
我需要这个,因为我正在处理缓存中的每个字段加载字段(作为本地 @client
字段),并且我想在突变失败后将它们设置为 false
(以及 return 该字段的先前值(如果需要)。您对处理每个字段加载指示器有更好的概念吗?
我目前正在使用 withApollo 获取客户端,然后使用 client.cache.writeData
手动操作缓存。它有点工作,但我遇到了渲染问题 - 我可以看到 console/developer 工具中的变化,但不是实际元素中的变化,并且在元素发生另一次变化后它采用更新的加载值。
还有其他方法吗?
您应该使用 client.writeData
而不是 cache.writeData
—— 后者不会在 UI 中触发反应性更新,而前者会。迁移到客户端的 3.0 版后,您将需要使用 writeQuery
或 writeFragment
,因为 writeData
将被删除,因此您可以考虑改用这两种方法之一。