12

我正在尝试了解Flux 示例聊天应用程序。作者提到了这种单向数据流:在此处输入图像描述

但是,在示例应用程序中,Action Creators( ChatMesssageActionCreator ) 和Stores( MessageStore ) 之间以及Stores( MessageStoreThreadStore ) 和Web API Utils( ChatMessageUtils ) 之间存在依赖关系,这似乎违反了单向数据流规则:在此处输入图像描述

是否建议遵循给定的示例,还是应该设计更好的模式?

更新

我发现 ChatMessageUtils 不属于 Web API Utils,所以商店的两个箭头不应该指向那里,因此也许它们没问题。然而,ActionCreators 和 Store 之间的联系似乎仍然很奇怪。

4

1 回答 1

10

这个例子有点勉强,创建它的目的是为了展示 waitFor() 是如何工作的。该示例的 WebAPI 方面相当不成熟,确实应该修改。

但是,即使MessageStore.getCreatedMessageData(text)将值传递给商店,它仍然是一个 getter。它不是在商店中设置数据。它实际上被用作实用程序方法,一个好的修订(拉请求?)将把该方法移动到 Utils 模块。

为了改进现实世界的示例,您可以做几件事:

  • 从商店而不是从 ActionCreators 调用 WebAPIUtils。只要响应调用另一个 ActionCreator 就可以了,并且不通过直接在商店中设置新数据来处理。重要的是新数据源于一个动作。数据如何进入系统比数据如何退出系统更重要。

  • 或者,您可能希望消息具有单独的客户端 ID 和服务器端 ID。这样做可能没有什么好处,比如管理乐观的渲染。在这种情况下,您可能希望在 Utils 模块中生成客户端 id,并将该 id 与文本一起传递给调度的操作和 WebAPIUtils。

说了这么多,是的,这个例子需要修改。

于 2014-10-10T16:27:25.493 回答