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

问题描述 投票:0回答:1

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

Angular的单向数据流规则禁止更新视图组成之后……日志更新将浏览器的JavaScript周期推迟一圈,这足够长。

由于页面已经呈现,所以禁止更新听起来很合理,但是为什么推迟更新才可以解决问题?勾选后,视图是否仍不构成?

[请像我5岁时向我解释。

angular lifecycle
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.