angular - Redux/ngrx/store 架构 : why not dispatch actions from dumb components?

标签 angular redux ngrx event-delegation tradeoff

我正在构建 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/

相关文章:

rest - REST 和 Angular 2.0 的 Spring 安全

javascript - D3.js 版本 3 中的 donut 气泡图

reactjs - React Native Flatlist extraData 不工作 redux 数据已更改

reactjs - 如何根据事件触发的某些条件以 redux 形式显示或隐藏字段

javascript - Redux - Ngrx Action 调度异步处理

css - 无法解析 '.file.scss' 中的 '../pages'

javascript - 具有新状态的 redux dispatch action 和 reducer

angular - NgRx:监听服务中的状态变化而不是使用 Effect

angular - NGRX 流程和路由 - 组件被访问次数过多

angular - 响应式(Reactive)表单元素在 Dragula 的拖动幽灵中显示不同的 <select> 值