问题描述
我了解了变更检测策略 - onPush,然后今天我在 youtube 上看到了这个视频
https://www.youtube.com/watch?v=ybNj-id0kjY
Minko 在这里解释了更快的 Angular 应用程序。
从 7:45 - 11:20 他说 -
当我们有两个组件时,例如应用程序组件(父级)和员工列表组件(子级) 在子组件中,我们有带有 keydown 事件的输入,这使得 CD - 更改检测重新运行。那是正确的。他说为了更快的 Angular 应用程序,我们应该使用 onPush 策略,他在子组件中实现了这一点 - 但从父级 - 应用程序组件他现在发送不可变的 js 列表,因此它们将成为新的参考 - 通过 onPush 更改检测,我们需要新的引用发送到子组件的输入,因此它只会在那时运行。但我不明白
在 14:40 我们可以看到,即使在输入输入时 - 再次调用 keydown 事件,子组件也被调用 - 但新数据不会从父组件发送到子组件 - 因为当我们输入时只调用 keydown 事件,但是我们没有按 Enter 键将新的 event.target.value 从输入添加到数组中 - 这意味着子组件中的输入属性仍然没有改变。
那么他为什么要在这种情况下使用 changeDetection onPush 并没有帮助呢?
解决方法
所以答案是 - 通过这种优化,当调用子组件中的计算方法时 - 他只为销售而不是研发部门调用。