6.变更检测机制和DoCheck钩子

(1)目的:保证组件属性变化和浏览器的显示同步,浏览器里面发生任何异步变化都会触发“变更检测”,当变更检测运行时,会检测应用中所有的绑定关系。(在1中必须用ngclick,想用原生的,必须用apply,在2中有了zone.js,随便用。变更检测只是把属性和页面模板同步,不会改变属性值。每个组件会生成它自己的变更检测器,当检查到变化,zone会根据组件变更检查策略来检查策略,来更新模板)

(2)检测策略:

      A:Default策略:检查所有组件

      B.Onpush策略:阻止检查继续走下去

(3)DoCheck钩子的调用

演示:

1.子组件


效果:

解析:点,点,点点击事件会触发变更检测机制,DoCheck会调用,改了tom值,变化捕捉到,点,点,计数器清空。钩子会检测什么时候会发生变化,小心钩子频繁调用,发生变化,都会被调用,大部分调用无关,很显然用这个钩子要非常高效,要不然会引起性能问题,有check关键字的钩子,变更检测发生,所有写check关键字钩子都会被调用。所有写有check关键字的钩子用的时候要非常高效。


你可能感兴趣的:(6.变更检测机制和DoCheck钩子)