簡體   English   中英

Angular 生命周期鈎子中的數據流

[英]Data flow in Angular lifecycle hook

我正在查看Angular Lifecycle Hook的官方文檔。 讓我感到困惑的是以下解釋:

Angular 的單向數據流規則禁止在視圖組成后對其進行更新......將日志更新推遲到瀏覽器 JavaScript 周期的一圈,這剛好夠長。

因為頁面已經渲染而禁止更新聽起來很合理,但是為什么推遲更新一個滴答聲可以解決問題呢? 不是說在滴答之后視圖仍然是組成的嗎?

請像我 5 歲一樣向我解釋。

每次 en 事件發生時(例如,當 setTimeout 的延遲已經過去,並且它的回調函數被執行時),Angular 會啟動更改檢測並相應地將必要的更改應用到 DOM。

禁止的是在事件發生時不更新組件的狀態,從而更新視圖。 被禁止的是在更改檢測仍在進行時更新組件的狀態,從而更新它們的視圖,因為它們已經被檢查過了。

例如,如果您嘗試在子組件的 ngAfterViewChecked 鈎子中修改父組件的狀態,您將收到來自 Angular 的錯誤,因為這是被禁止的:Angular 剛剛檢測到父組件和子組件的更改,而您在該更改檢測期間同步重新在父項中進行更改。 另一方面,調用setTimeout()安排稍后的更改,並且將再次檢測到該更改,並開始新的更改檢測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM