谁负责从带有缓存的 Flux 应用程序中的服务器获取数据?

Posted

技术标签:

【中文标题】谁负责从带有缓存的 Flux 应用程序中的服务器获取数据?【英文标题】:Who is responsible to fetch data from server in a flux app with caching? 【发布时间】:2015-04-07 04:22:50 【问题描述】:

在 Flux Webchat 示例应用程序和 README 图中,动作创建者似乎应该从服务器检索数据。

我看到的问题是,如果数据已经在存储中,则可能不需要提取。商店是唯一知道的,因此需要实际调度操作。

我认为最好尽可能获取非规范化数据,以尽量减少 xhr 调用。如果商店是非规范化的,例如MessageStore 将包含呈现消息所需的所有数据。每条消息都像


 "id": 42
 "message": "Héllo, you tried reactjs-flux too. Awesome isn't it!"
 "user": id: 1337, username: "amirouche", bio: "maker",
 "likes": [id: 2600, username: "NinjaTurtle", id: 2601, username: "Peer"

商店可能有责任(通过事件?)用部分用户模型更新 UserStore。

我想到的另一种方法是拥有一些规范化的商店,并使用视图期望的架构创建特定的商店。

在这种情况下,在我看来,动作创建者只对调度有效负载有用,即。没用。

你怎么看?

【问题讨论】:

【参考方案1】:

我的商店通常负责获取数据。这样做可以确保所有逻辑都可以由存储本身管理,并且您可以完全控制何时/如何/为什么获取数据。

您还可以让商店相互通信,这也是商店应该负责处理/获取数据的另一个优点。

另外,正如 Flux 模式所描述的: “Stores 包含应用程序的状态和逻辑。它们的作用有点类似于传统 MVC 中的模型,但它们管理着许多对象的状态......” 让商店管理从 API/服务器端获取数据是有意义的。

【讨论】:

感谢您的回答(我的问题表述得很糟糕)。好像我发布的图表已经过时了,我可以在通量网站上找到它。谢谢。参考:facebook.github.io/flux/docs/overview.html#content

以上是关于谁负责从带有缓存的 Flux 应用程序中的服务器获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

Flux - 谁应该更改正在收集的模型中的数据?

使用 Flux 构建一个编辑表单,谁实际将数据 POST 到服务器:操作、存储、视图?

使用链接响应标头的分页调用中的 Spring Flux

从一个触发器,如何找出谁修改了表X上的数据,同时该用户从一个通用的dbuser登录,但从用户表获得了权利

第3章 从Flux到Redux

Flux+React.js - 缓存 API 请求响应