我应该总是在我的组件中使用ChangeDetectionStrategy.OnPush
吗?
我总是听到OnPush
绝对是惊人的,并解决了很多问题,加速Angular应用程序,甚至摆脱NgZone
。但如果是的话,为什么不用ng g component
默认生成?
如果真是太神奇了,我们应该一直使用它吗?
为什么不是默认使用ng g组件生成的?
这是开发人员需要做出的设计决策。只有在使用不可变对象时,ChangeDetectionStartegy.OnPush才有效。如果您不这样做,您将很难找到组件出了什么问题。由于角度团队不会强迫您使用不可变对象,为什么他们会使用此策略生成组件。
您可以在此处阅读有关ChangeDetection的更多信息:https://blog.angularindepth.com/everything-you-need-to-know-about-change-detection-in-angular-8006c51d206f
OnPush旨在与具有@Input()
装饰器的组件一起使用。简单来说,从父组件获取输入的组件。由于更改检测是一项昂贵的操作,因此您可以将这些组件配置为仅在其输入属性更改时运行更改检测。
使用OnPush()
的一个很好的例子是加载器组件。