0

redux 具有“单一事实来源”的原则,我很难弄清楚来自 GQL 的轮询片段将如何继续保持这一原则。

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

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

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

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

  users: {
     32 : {
       name: "James"
       profilePic: "YYYYYY"
     }
  }
}

但是当用户 - James 将他的名字更改为 Julian 和另一个组件时会发生什么,经常更新的聊天菜单组件将具有用户 ID:32 和不同的名字 Julian。
帖子容器也会因此而更新吗?还是会继续显示过时的数据?

4

1 回答 1

0

好问题!

你的答案可以在这里找到:http: //dev.apollodata.com/core/how-it-works.html#normalize

如果链接断开,将进行总结:

apollo-client不会按照您请求的方式存储东西,而是作为一个平面结构(并基于 为该对象生成一个 ID id__typename并跟踪对象之间的引用。

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

于 2017-04-13T05:51:35.650 回答