在我们的代码库中,我们最近将许多 React 组件迁移到了纯通量架构。因此,我们的数据流看起来几乎与 Facebook 团队提供的这张图片一模一样:(
来源:github.io)
我们遇到的一个问题是调用服务器并获得结果需要大量样板代码。过程如下:
- View 将一个叫做类似动作的动作传播
GET_DATA_FROM_SERVER
给动作创建者(比如说被称为ViewActionCreator
)。 ViewActionCreator
调度这个动作,它在大多数情况下没有负载,然后调用api.retrieveData
- 从服务器接收到数据后,
api.retrieveData
调度一个动作,在这种情况下SERVER_DATA_RECEIVED
,将检索到的数据作为有效负载调用。 - 商店响应分派的两个动作。然而,在大多数情况下,商店只为第二个动作 (
SERVER_DATA_RECEIVED
) 做一些事情,因为我们发现乐观视图更新除了登录等少数例外情况通常不需要或非常有用。
因此,我的问题是,我们有什么理由不应该直接让 view callapi
的方法,而让那些 api 方法只在数据接收时调度动作?
我们遇到的另一个相关问题是使用 https://github.com/STRML/keyMirror 生成的常量。我们反复遇到一个错误,我们忘记添加动作创建者中使用的常量并将其存储到我们的常量文件中,但这直到运行时才会出现,因为我们的存储使用 switch 语句来测试他们从调度程序,当我们使用未定义的常量时,这只会渗透到 switch 语句的末尾。