在" Reflux"中,行动的目的是什么?

时间:2015-05-29 12:18:43

标签: javascript reactjs-flux flux refluxjs

我熟悉Flux架构和Reflux--更简单的版本,没有调度程序 - 与ReactJS一起使用。

在完整的Flux中,听起来行为已经(或者至少可以有)明确且非平凡的目的:它们可以用于更新外部服务(例如,通过以下方式将数据保存回服务器) API),如此问题中所述:Should flux stores, or actions (or both) touch external services?

但是,在Reflux中,操作肯定只是愚蠢的消息解析器。所以我的问题是,他们服务的目的是什么?为什么要这样呢?如果您的视图/组件直接调用商店中的方法,会发生什么不好的事情?

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

1 个答案:

答案 0 :(得分:2)

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

回流操作也可以通过将其放在preEmit action hook中来触及API等。通常,您将创建异步操作,在preEmit挂钩中添加一些异步内容,然后在异步工作完成(或失败)时调用“已完成”或“失败”子操作。您也可以在preEmit钩子中同步工作。想到了记录。

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

异步操作也work as promises。当然,您也可以实现您的商店,但我认为这对数据存储负有很多责任。