1

我正在熟悉 Flux 架构和 Reflux - 更简单的版本,没有调度程序 - 用于 ReactJS。

在完整的 Flux 中,听起来动作具有(或至少可以具有)明确且重要的目的:它们可用于更新外部服务(例如,通过 API 将数据保存回服务器),如本问题所述:通量存储或操作(或两者)是否应触及外部服务?

然而,在 Reflux 中,动作绝对只是愚蠢的消息解析器。所以我的问题是,它们的目的是什么?为什么要拥有它们?如果您的视图/组件直接在您的商店中调用方法,会发生什么坏事?

我即将将我的小应用程序从 Flux 转换为 Reflux,看起来我会将当前操作中的所有逻辑转移到商店中。在我看来,Reflux 中的操作除了充当组件和商店之间的无用中间人外,什么也没做。我错过了什么?

4

1 回答 1

2

除了在 OP 评论中指出的在任意数量的商店中侦听操作的能力之外:

回流动作也可以触及 API 等,例如将其放置在preEmit 动作钩子中。通常,您会创建一个异步操作,在 preEmit 挂钩中添加一些异步内容,然后在异步工作完成(或失败)时调用“完成”或“失败”子操作。当然,您也可以在 preEmit 挂钩中进行同步工作。我想到了日志记录。

也完全可以在 store 中监听一个动作并在 store 中执行异步工作,然后从那里调用 .completed 或 .failed,但我认为已经形成的共识是 store 不应该做那个工作,stores应该只对变化的数据做出反应,而不是执行业务逻辑。

异步操作也可以作为 promises 工作。当然,你也可以实现你的存储来做到这一点,但我认为这对数据存储来说是很多责任。

于 2015-07-02T08:43:08.383 回答