美文网首页
angular 生命周期钩子/函数详解

angular 生命周期钩子/函数详解

作者: 饱饱想要灵感 | 来源:发表于2023-03-22 15:10 被阅读0次

    Angular生命周期钩子(Lifecycle Hooks)是一组由Angular提供的函数,它们在组件的生命周期中的不同阶段被调用。

    这些钩子函数可以让我们在特定的时刻执行自定义逻辑,例如在组件初始化时获取数据、监测变化或清理资源等。

    每个接口都有唯一的一个钩子方法,它们的名字是由接口名再加上ng前缀构成的,比如OnInit接口的钩子方法是ngOnInit。

    钩子详解

    执行顺序 接口 函数 调用次数 解释
    0 - constructor 只调用一次 constructor是ES6中class中新增的属性,当class类实例化的时候调用constructor来初始化类。
    angular中的组件是基于class类实现的,constructor用来做依赖注入
    1 OnChanges ngOnChanges 多次调用, 首次调用发生在组件初始化时, ngOnInit之前 当被绑定的输入属性的值发生变化时调用, 且必须是父组件改变子组件的输入属性变化时, 才会调用,而子组件自己改变输入属性不会调用
    ngOnChanges()方法获取了一个对象,它可以同时观测多个绑定的属性值,它把每个发生变化的属性名都映射到了SimpleChange对象, SimpleChanges的值包含:previousValue : any, currentValue : any, firstChange : boolean
    通俗地说:@input属性(输入属性)发生变化时,会调用。非@input属性,不会调用。如果@input属性为对象时,即使对象的属性值发生变化也不会调用,只有对象的引用发生变化时才会触发
    2 OnInit ngOnInit 只调用一次 组件初始化时,只调用一次,在第一次调用ngOnChange后调用。
    3 DoCheck ngDoCheck 多次调用 在组件定义的属性或方法变更时调用(用于脏值检查,非常消耗性能,因为会把所有的属性和方法都检查一遍),第一次是在ngOnInit之后调用。
    后续只要鼠标移动就会触发
    4 AfterContentInit ngAfterContentInit 只调用一次 只调用一次, 在组件内容初始化之后调用,在第一次ngDoCheck之后调用。
    5 AfterContentChecked ngAfterContentChecked 多次调用 在组件每次检查内容发生变更时调用。第一次调用是在ngAfterContentInit之后。
    后续只要鼠标移动就会触发, 发生在ngDoCheck之后调用
    6 AfterViewInit ngAfterViewInit 只调用一次 在组件相应的视图初始化之后调用,只调用一次, 第一次ngAfterContentCheck之后调用。
    7 AfterViewChecked ngAfterViewChecked 多次调用 在组件每次检查视图发生变更时调用,第一次是在ngAfterViewInit之后
    后续只要鼠标移动就会触发, 发生在ngAfterContentChecked之后
    8 OnDestroy ngOnDestroy 只调用一次 在组件销毁前调用,可以用来做一些清理工作,比如退订可观察对象(subscription)和移除事件处理器,以免导致内存泄漏。
    angular组件生命周期.png

    钩子分类

    • 指令与组件共有的钩子: ngOnChanges, ngOnInit, ngDoCheck, ngOnDestroy
    • 组件特有的钩子: ngAfterContentInit, ngAfterContentChecked, ngAfterViewInit, ngAfterViewChecked

    相关文章

      网友评论

          本文标题:angular 生命周期钩子/函数详解

          本文链接:https://www.haomeiwen.com/subject/soavrdtx.html