javascript - Ngrx Store - 所有 UI 更改都应该存储吗?

标签 javascript angular angular-material2 ngrx

我将 Angular 2 与 Ngrx 和 Angular Material 一起使用。 是否所有 UI 更改(如下拉菜单或对话框)都应该存在?

例如:

<button md-button [mdMenuTriggerFor]="menu">Menu</button>
<md-menu #menu="mdMenu">
  <button md-menu-item>Item 1</button>
  <button md-menu-item>Item 2</button>
</md-menu>

我应该在商店中支持下拉菜单吗?

下一个例子:

<md-sidenav-container class="example-container">
  <md-sidenav #sidenav class="example-sidenav">
    Jolly good!
  </md-sidenav>

  <div class="example-sidenav-content">
    <button type="button" md-button (click)="sidenav.open()">
      Open sidenav
    </button>
  </div>

</md-sidenav-container>

我可以使用open方法吗?也许我应该创建一个组件,将 sidenav 包装在仅对输入 Input() open; 进行操作的组件中?

最佳答案

对我来说,我通常会问 3 个问题。

  • UI 更改是否与组件隔离并且不影响其他组件?

  • View销毁后返回时是否需要持久化UI变化?

  • 出于调试目的,您是否希望跟踪此状态(可能是为了重新创建最终用户的 View ?)

如果您对这 3 个问题的回答是否定的,那么您可能不需要将该组件的状态放入商店中。

通过不耦合商店的某些东西,您可以使其更加模块化、更易于测试和可重用。

关于javascript - Ngrx Store - 所有 UI 更改都应该存储吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46182364/

相关文章:

angular - 将 MatDialog 弹出窗口添加到 Angular Root 而不是 body

javascript - 如何在第一次运行时更新回调 View

javascript - 如何在 Javascript 中识别节点列表中的标签?

angular - 如何通过代码扩展PrimeNg TreeTable

css - 跨元素共享 css 和 ts

angular - 如何将服务变量传递到 Angular Material 对话框中?

javascript - 从回调函数内部使用 "pure"Node.js 重定向

javascript - 如何检测我的球体是否撞到了另一个静态物体

angular - 为什么在 for 循环中未定义使用 ngModel 的模板引用变量?

angular - 自 Angular/Material 从 5 升级到 6 以来,自定义 native 日期适配器不再起作用