Angular生命周期挂钩中的数据流

时间:2019-12-06 22:34:49

标签: angular lifecycle

我正在查看Angular Lifecycle Hook的官方文档。令我感到困惑的是以下解释:

  

Angular的单向数据流规则禁止更新视图   编写完成后……将日志更新推迟一圈浏览器的JavaScript周期,就足够了。

禁止更新,因为页面已经呈现合理,但是为什么推迟更新才可以解决问题?滴答之后,视图是否仍会构成?

请像我5岁时向我解释。

1 个答案:

答案 0 :(得分:0)

每次发生en事件(例如,当setTimeout的延迟已过去并且其回调函数已执行时),Angular都会启动更改检测并将相应的更改应用于DOM。

禁止的是,事件发生时不要更新组件的状态,也不要更新视图。禁止在已经检查过组件之后,在仍进行更改检测的同时更新组件的状态,从而更新它们的视图。

例如,如果您尝试在子组件的ngAfterViewChecked挂钩中修改父组件的状态,则会从Angular中收到一个错误,因为这是被禁止的:Angular刚刚检测到父和子组件的更改,并且您会在更改检测期间同步在父级中进行更改。另一方面,调用setTimeout()可以安排以后的更改,然后将再次检测到该更改,并开始进行新的更改检测。