Flux:将行动分开的常见做法btw动作创作者

时间:2015-11-22 16:14:33

标签: javascript reactjs flux

如果您看一下flux-chat示例,您可能会看到三个动作创建者。几乎是这样的小型hello-world应用程序。我正在编写React + Flux应用程序并想知道更大的应用程序在动作创建者之间分离动作的常见做法是什么?我应该为每个模块创建唯一的动作还是单独创建?如果我为每个模块创建单独的 - 而不是彼此依赖,那么可以接受吗?

1 个答案:

答案 0 :(得分:1)

动作创作者应该都处于相同的抽象层次,这意味着它们永远不应该相互依赖(请注意,它们在这里没有相互依赖:https://github.com/facebook/flux/tree/master/examples/flux-chat/js/actions)。虽然动作创建者不应该相互依赖,但是他们可以依赖于多个商店,并且多个动作可以依赖于同一个商店。这是将动作与动作创建者分开的原因,因为动作实际上是在商店内部定义的。因此,如果您需要从多个商店访问数据,您可以在动作创建者中执行此操作(他们在消息存储库中使用线程存储,这是不好的做法。线程数据应该传递到操作中而不是通过商店包括。)

在flux chat示例中,他们有另一个名为Utils(非常一般)的概念,它不会发出事件或对应用程序状态做任何事情。实际上,它并没有真正增加磁通体系结构。这只是一个源于DRY原则的概念。

编辑:

动作创建者依赖于商店的原因是因为抽象中的分离指明了逻辑所属的位置。作为类比,当你处理一个用于添加两个整数的函数时,你不会担心分配内存。您希望只拥有与计算相关的相关代码,并将低级别详细信息委托给其他方法。这与商店和行为提供的抽象差异相同。操作正在努力将单独的服务/存储连接在一起,而存储则维护如何与http,websockets和应用程序状态进行交互。