代码之家  ›  专栏  ›  技术社区  ›  Dolan

我应该一直使用ChangeDetectionStrategy.onPush吗

  •  0
  • Dolan  · 技术社区  · 6 年前

    我应该一直用 ChangeDetectionStrategy.OnPush 在我的组件中?

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

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

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ritesh Waghela    6 年前

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

    这是开发人员需要做出的设计决策。changedectionstartegy.onpush仅在使用不可变对象时才起作用。如果不这样做,您将很难找到您的组件出了什么问题。既然角度团队不会强迫你使用不可变的对象,为什么他们会用这种策略生成组件。

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

    onpush设计用于处理 @Input() 装饰师。简单来说就是从父组件获取输入的组件。由于更改检测是一项昂贵的操作,因此您可以将此类组件配置为仅在其输入属性更改时运行更改检测。

    一个很好的例子 OnPush() 要使用的将是加载程序组件。