Mar*_*mer 5 angular2-changedetection angular
始终使用Angular-2项目是合理的约定吗
changeDetection: ChangeDetectionStrategy.OnPush
Run Code Online (Sandbox Code Playgroud)
在组件的装饰器中?除非有明确的理由使用默认策略?
不,我不建议这样做。
Angular 2 变化检测非常快。如果你有一个小项目,我不会费心使用它。
如果您有一个大型项目,我可能只会OnPush在某些“叶”组件上使用——具有仅依赖于输入属性的视图绑定的叶组件。(“叶子”组件没有子组件。)
请注意,OnPush可以防止子组件被自动更改检测,因为如果没有导致OnPush组件被更改检测,则也不会检查其子组件。因此我通常只在叶组件上使用它的原因,以避免这个可能的问题。
还请注意,如果您将 JavaScript 引用类型用于输入属性,OnPush则不会检测您对这些引用类型的属性所做的更改(例如,如果您从数组中添加或删除元素,或者如果您修改对象属性的值。)
特别是对于大型项目,答案是,YES并且始终建议在创建新组件时将其作为第一件事添加。
原因很简单:减少变更检测过程,这是一项非常昂贵的操作。
需要时启动检测的方法有很多种,也许最常用的是changeDetection()从ChangeDetectorRef. async如果您正在等待订阅值,另一种方法是在视图中使用管道。
OnPush要在终端中运行命令时自动添加策略ng generate component,您只需在节点中添加angular.json选项schematics:
...
"schematics": {
"@schematics/angular:component": {
"changeDetection": "OnPush",
"prefix": "app",
"styleext": "scss"
},
"@schematics/angular:directive": {
"prefix": "app"
}
}
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |