我正在构建 Angular 2 ngrx/store 应用程序并尝试了解最佳实践。
- 我喜欢有一个不可变的状态,它只根据分派(dispatch)的操作发生变化,这样应用状态就非常清晰且可调试。
- 我喜欢从“智能”容器流出的单向数据流,因为这允许我们使用异步管道来减少状态检查。
但我不明白为什么我们要在将操作分派(dispatch)到商店之前将事件从dumb组件一直“冒泡”到智能组件。是拥有可重用组件的唯一原因吗?在我看来,大多数组件无论如何都不会被重复使用,因为在很多情况下我都希望所有内容都相同,包括 CSS。我还缺少其他好处吗?从可维护性/可读性的 Angular 来看,能够直接在发生交互的组件上看到分派(dispatch)的操作不是更好吗?
最佳答案
首先,我不是主题免责声明方面的专家。
- 我觉得智能组件控制dumb组件实际上就是所谓的中介者模式。使用此模式可确保更少的组件必须处理
store
,从而增强了虱子耦合。 - 易于维护:如果您必须重构和批量重命名操作,当操作出现在较少的地方时,这样做会更容易。
- 有一个处理
Action
的中心位置允许对架构进行快速概览。store
访问逻辑的热交换也可以更容易地完成。 - 正如已经提到的:重用。您可以在具有或不具有 ngrx 架构的项目之间共享和重用dumb组件。
- 也可以通过连接不同的
输入
和输出
在同一个项目中重用。例如:dropdownComponent
可能有很多需要不同输入和输出的用例。
关于angular - Redux/ngrx/store 架构 : why not dispatch actions from dumb components?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866740/