生命周期钩子的调用顺序以及变更检测机制

1、调用顺序
首先是构造函数constructor
ngOnChanges -  当一个父组件修改或初始化一个子组件输入属性的时候被调用,如果一个组件没有输入属性,那么这个方法永远不会被调用,首次调用一定发生在ngOnInit之前,此方法会被多次调用,每一次输入属性变化后都会被调用。
ngOnInit -  如果组件存在输入属性,则在第一次 ngOnChanges 后调用,用来初始化组件或指令
ngDoCheck - 自定义的方法,用于检测和处理值的改变,在angular每个变更检查周期中被调用的
ngAfterContentInit - 在组件内容初始化之后调用
ngAfterContentChecked - 组件每次检查内容时调用
ngAfterViewInit - 组件相应的视图初始化之后调用
ngAfterViewChecked - 组件每次检查视图时调用
ngOnDestroy - 指令销毁前调用

 

2、变更检测机制和DoCheck钩子
angular的变更检测机制室友zone.js实现的(在组件内package.json内可以查看相关联),主要目的是为了保证组件的变化和页面的变化是同步的。浏览器中发生的任何异步事件都会触发变更检测。比如点击按钮、输入数据、数据从服务器返回
注意:变更检测机制只是将组件属性的改变反映到模板上,变更检测机制本身永远不会改变组件属性的值。
 
angular实现了2个变更检测策略Default和OnPush
如果所有的组件都使用Default策略,那么不管变更发生在哪个组件上,那么zone.js都会检测整个组件树
如果有一个特定的组件声明自己的变更策略是OnPush,那么只有当这个组件的输入属性发生变化时,zone.js才会检测这个组件及其子组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值