特色栏目

ASP源码

PHP源码

.NET源码

JSP源码

游戏频道
专题合集
关闭菜单
首页> Javascript教程> 什么是变更检测?聊聊angular的变更机制

什么是变更检测?聊聊angular的变更机制

时间:2022-06-02 14:05:53 作者:互联网

什么是变更检测?下面本篇文章带大家聊聊Angular中的变更检测机制,介绍一下状态变化如何通知变更检测、Angular变更检测策略,希望对大家有所帮助。

一、什么是变更检测

二、什么引起了变更

事件驱动,来源有以下三大类:

这几点有一个共同点,就是它们都是异步的,也就是说,所有的异步操作是可能导致数据变化的根源因素,所以每当执行一些异步操作时,我们的应用程序状态可能发生改变,而这时则需要去更新视图

三、状态变化怎么通知变更检测

Angular当中则接入了NgZone,由它来监听Angular所有的异步事件,Angular 在启动时会重写(通过 Zone.js)部分底层浏览器 API(暴力的拦截了所有的异步事件)。

常见的有两种方式来触发变化检测,一种方法是基于组件的生命周期钩子

ngAfterViewChecked() {
    co***le.log('cl***er-master.component ;cd');
  }

另一种方法是手动控制变化检测的打开或者关闭,并手动触发

constructor(private cd: ChangeDetectorRef) {
  cd***tach()
  setInterval(() => {
    th***cd.detectChanges()
  }, 5000)
}

三、Angular 变更检测

Angular 的核心是组件化,组件的嵌套会使得最终形成一棵组件树,Angular 的变化检测可以分组件进行,每个组件都有对应的变化检测器 ChangeDetector,可想而知这些变化检测器也会构成一棵树。
在 Angular 中每个组件都有自己的变化检测器,这使得我们可以对每个组件分别控制如何以及何时进行变更检测。

四、变更检测策略

Angular还让开发者拥有定制变化检测策略的能力。

4.1 default

Angular 默认的变化检测机制是 Ch***eDetectionStrategy.Default,每次异步事件 callback 结束后,NgZone会触发整个组件树 至上而下做变化检测

4.2 onPush

OnPush 策略,用以跳过某个 component 以及它下面所有子组件的变化检测

其实在设置了 OnPush 策略以后,还是有许多方法可以触发变更检测的;

五、变化检测对象引用

相关文章

相关应用

热门文章

猜你喜欢

返回顶部