• 技术文章 >web前端 >js教程

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

    青灯夜游青灯夜游2022-05-30 20:50:09转载131
    什么是变更检测?下面本篇文章带大家聊聊Angular中的变更检测机制,介绍一下状态变化如何通知变更检测、Angular变更检测策略,希望对大家有所帮助。

    一、什么是变更检测

    二、什么引起了变更

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

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

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

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

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

    ngAfterViewChecked() {
        console.log('cluster-master.component cd');
      }

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

    constructor(private cd: ChangeDetectorRef) {
      cd.detach()
      setInterval(() => {
        this.cd.detectChanges()
      }, 5000)
    }

    三、Angular 变更检测

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

    四、变更检测策略

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

    4.1 default

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

    4.2 onPush

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

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

    五、变化检测对象引用

    更多编程相关知识,请访问:编程视频!!

    以上就是什么是变更检测?聊聊angular的变更机制的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:Angular.js Angular
    上一篇:详解node中如何安装多版本并进行切换 下一篇:一文掌握JavaScript数字类型
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• Angular中怎么自定义视频播放器• Angular项目中怎么使用 SASS 样式• Angular知识点分享:聊聊表单、管道、绑定、指令、通信和周期• 浅析Angular变更检测机制,聊聊如何进行性能优化?• 聊聊angular中进行内容投影的方法• 深入了解angular中的表单(响应式和模板驱动)
    1/1

    PHP中文网