我应该直接使用Apollo数据还是在Redux商店中保存/修改它?

时间:2017-12-11 11:22:06

标签: reactjs redux apollo react-apollo apollo-client

我应该如何处理从Apollo查询中检索到的数据?

我的第一个想法是将它保存在redux商店中,修改它(使用redux减少它,使用动作创建者)然后,当数据准备就绪时(用户点击"保存"按钮),发送阿波罗的变异,以便在服务器上更新它。

尽管如此,我并不认为这是最好的方法。我应该避免在这里使用Redux商店并直接使用Apollo命令式API吗?

1 个答案:

答案 0 :(得分:1)

您是否阅读了有关updating the cache的文档?

当发送变异进行编辑时,通常会将修改后的对象作为响应。收到更新的对象后,react-apollo会自动更新与收到的相同id__typename对应的相应本地存储对象。

因此,如果您在组件上使用graphql装饰器从Apollo商店注入道具,当商店因突变或查询而更新时,道具应该再次自动传递。无需手动修改它们。

在某些情况下,您需要使用store.readyQuerystore.writeQuery,但它们是边缘情况,希望不会太多。

不过,我会说,除非你感到舒服并且有时间与react-apollo合作以了解它是如何运作的以及它正在做什么,否则最好直接与Apollo一起工作,而不是试图做别的事。