阿波罗单一的真相来源

时间:2017-04-10 12:41:44

标签: redux apollo react-apollo apollo-client

redux具有"单一事实来源的原则,并且我很难确定GQL中的轮询片段将如何继续保持这一原则。

TL; DR:apollo是否规范了整个应用程序或每个apollo容器的实体?

Apollo有自己的redux商店。 通过架构图,我看到在将数据应用到redux之前存在规范化阶段。

我的问题是:假设我有一个帖子架构和一个用户架构。 在轮询帖子时,我会提取帖子信息,还有作者(用户架构)名称和个人资料图片。 我有一个带阿波罗的帖子容器。 所以我 GUESSING apollo商店现在有这样的状态:

 {
  posts: {
     512 : {
        title: "title"
        content: "big content"
        author: [32]
     }
  },

  users: {
     32 : {
       name: "James"
       profilePic: "YYYYYY"
     }
  }
}
但是当用户 - 詹姆斯将他的名字改为朱利安时,会发生什么,以及另一个组件,经常更新的聊天菜单组件会有用户名:32,名字不同,朱利安。 由于这个原因,帖子容器也会更新吗? 还是会继续显示过期数据?

1 个答案:

答案 0 :(得分:0)

很棒的问题!

您可以在此处找到答案:http://dev.apollodata.com/core/how-it-works.html#normalize

总结以防链接中断:

apollo-client不按照您的要求存储内容,而是以平面结构存储(并根据id生成该对象的ID,__typename并跟踪对象之间的引用。

当组件请求这些对象时,它将从展平的结构中获取对象并将其构建为请求的格式。