Apollo Client 2:来自 Mutation 的新对象:更新所有缓存的查询,这个新对象应该是其中的一部分? [复制]

Posted

技术标签:

【中文标题】Apollo Client 2:来自 Mutation 的新对象:更新所有缓存的查询,这个新对象应该是其中的一部分? [复制]【英文标题】:Apollo Client 2: New object from Mutation: Update all cached queries this new object should be part of? [duplicate] 【发布时间】:2019-02-05 12:14:45 【问题描述】:

对于创建新对象的突变,是否可以自动更新该新对象应属于的所有缓存查询(以列表/单一形式)?

与需要了解要更新哪些查询的手动解决方案相反: https://www.apollographql.com/docs/react/essentials/mutations.html#update https://www.apollographql.com/docs/react/features/optimistic-ui.html#optimistic-advanced

我有一种感觉,这可能必须在未来版本的 Apollo 中实现,它会考虑这个用例,但也许我错了,今天可以做到。

请随时提供不同的实现想法/场景/想法,以决定哪些数据需要存在于客户端,以确定 apollo 应该更新哪些查询,或者这是否可以自动化。

例子:

架构:TodoList、Todo 操作:在 TodoList 中创建一个新的 Todo 结果:Todo 自动添加到 TodoList 查询,该查询会拉取所有子 Todo 对象

非常感谢,

【问题讨论】:

【参考方案1】:

我不确定这是否是最佳实践,但实现这一目标的一种方法是简单地修改您对 Apollo 服务器上的突变的响应。我的意思是,您可以返回整个更新后的列表,而不是创建新的 TODO,如果所有字段(__typename 等)都对应于存储在缓存中的待办事项列表,它将自动更新

【讨论】:

以上是关于Apollo Client 2:来自 Mutation 的新对象:更新所有缓存的查询,这个新对象应该是其中的一部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在前端 apollo-client 上处理来自 Node/Koa 的后端错误

apollo 的 useQuery 数据在 client.resetStore() 之后没有更新

如何在 Apollo Client React 中获取多个条件查询?

nuxt.js + Apollo Client:如何禁用缓存?

如何在 Apollo Client 上自动从网络错误中恢复?

如何为带有 InMemoryCache 的 apollo-client 中的正则表达式匹配的任何数据指定最大缓存时间?