在另一个行动中呼吁行动是一种好习惯(不断变化)

时间:2016-02-09 18:31:17

标签: flux reactjs-flux

我的行动如下:

SomeActions.doAction1(){
   //..dispatch event "started"...
   //...do some process....
   FewActions.doAnotherAction(); //CAN WE DO THIS
   //...do something more....
   //..dispatch event "completed"..
}

虽然上面的工作没有任何问题,但只是想知道,如果根据通量模式/标准是有效还是有更好的方法。

另外,我想从商店调用Actions是个坏主意。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:4)

是的,在另一个Action中调用Action是一种不好的做法。行动应该是原子的;商店中的所有更改都应该响应单个操作。他们应该描述在现实世界中发生的一件事:用户点击按钮,服务器响应数据,屏幕刷新等等。

当大多数人将动作视为命令式指令(首先执行A,然后执行B)时,大多数人会对动作感到困惑,而不是描述发生的事情以及被动<的起点/ em>进程。

这就是为什么我建议人们用过去时态命名他们的动作类型:BUTTON_CLICKED。这提醒程序员基本上是外部驱动的,描述性的行为。

行动就像一份报纸,送到所有商店,描述发生的事情。

从商店调用操作几乎总是错误的做法。我只能想到一个例外:当Store通过启动异步进程来响应第一个Action时。当异步过程完成时,您需要触发第二个Action。对服务器进行XHR调用就是这种情况。但更好的方法是将XHR处理代码放入Utils模块中。然后,商店可以通过调用Utils模块中的方法来响应第一个Action,然后Utils模块具有在服务器响应返回时调用第二个Action的代码。