应该在哪里派出行动? Angular 4 + ngrx

时间:2017-11-08 23:10:52

标签: angular redux ngrx

我需要一些建议,使用ngrx库来管理Angular 4 app中的数据流。这是一些嵌套组件的基本“架构”:

Container (1)
   |__> Toolbar - few selects to specify which properties of item 
            should be displayed (2)
   |__> Search form - for narrowing displayed items (3)
   |__> List of items - with pagination (4)
         |__> Item * n (5)

让我们假设有三种可能的动作(实际上它更复杂,因为用户可以使用一个项目做很多事情): a)装载一批物品, b)删除项目, c)修改项目的状态。

这里有很多关于数据流的问题,但基本上我想知道从ItemComponent内部调度动作b)和c)是否合理?我真的不喜欢这个想法,但另一种方法是将有关删除/修改事件的信息从ItemComponent发送到ListComponent然后发送到ContainerComponent。所以它是我宁愿避免的输入/输出链。

问题:ItemComponent可以“智能”并向商店发送动作还是设计不好?

1 个答案:

答案 0 :(得分:2)

也许这不是您问题的完美答案,但您应该考虑使用服务来包装所有调度操作(进一步阅读http://blog.brecht.io/A-scalable-angular2-architecture/)。这将有助于纠缠组件数据流。

如果您不想使用上文所述的服务,我会认为在ItemComponent中进行调度是一个糟糕的设计,因为这会给出一个组件,即只代表一个数据元素,应该在智能容器组件中的知识。 about container and presentational components