我应该总是使用ChangeDetectionStrategy.OnPush

问题描述 投票:0回答:1

我应该总是在我的组件中使用ChangeDetectionStrategy.OnPush吗?

我总是听到OnPush绝对是惊人的,并解决了很多问题,加速Angular应用程序,甚至摆脱NgZone。但如果是的话,为什么不用ng g component默认生成?

如果真是太神奇了,我们应该一直使用它吗?

angular angular2-changedetection angular-changedetection
1个回答
2
投票

为什么不是默认使用ng g组件生成的?

这是开发人员需要做出的设计决策。只有在使用不可变对象时,ChangeDetectionStartegy.OnPush才有效。如果您不这样做,您将很难找到组件出了什么问题。由于角度团队不会强迫您使用不可变对象,为什么他们会使用此策略生成组件。

您可以在此处阅读有关ChangeDetection的更多信息:https://blog.angularindepth.com/everything-you-need-to-know-about-change-detection-in-angular-8006c51d206f

OnPush旨在与具有@Input()装饰器的组件一起使用。简单来说,从父组件获取输入的组件。由于更改检测是一项昂贵的操作,因此您可以将这些组件配置为仅在其输入属性更改时运行更改检测。

使用OnPush()的一个很好的例子是加载器组件。

© www.soinside.com 2019 - 2024. All rights reserved.