【问题标题】:Data flow in Angular lifecycle hookAngular 生命周期钩子中的数据流
【发布时间】:2019-12-06 22:34:49
【问题描述】:

我在看Angular Lifecycle Hook的官方文档。让我困惑的是以下解释:

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

因为页面已经渲染而禁止更新听起来很合理,但是为什么推迟更新可以解决问题呢?不是打勾后视图还在合成吗?

请像我 5 岁一样向我解释。

【问题讨论】:

    标签: angular lifecycle


    【解决方案1】:

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

    当事件发生时,禁止更新组件的状态,从而更新视图。禁止在已经检查过变更检测的同时更新组件的状态,从而更新它们的视图。

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

    【讨论】:

    • 听说这就是模板驱动表单异步的原因。你介意解释一下吗?
    • 我不介意,但我不知道它的效果如何足以解释。
    猜你喜欢
    • 2017-11-22
    • 2019-06-26
    • 2018-08-30
    • 2017-11-13
    • 2018-01-11
    • 2018-05-28
    • 2017-01-18
    • 2020-01-15
    相关资源
    最近更新 更多