亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Angular中單向數據流的示例分析

發布時間:2021-09-03 11:03:05 來源:億速云 閱讀:151 作者:小新 欄目:web開發

這篇文章主要介紹了Angular中單向數據流的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

變更檢測

Angular 中,數據是由頂部根節點流向最后的葉子節點,整個數據流是單向,構成一顆單向樹。

Angular中單向數據流的示例分析

Angular 認為所有的異步操作都有可能會引起模型的變化,引起數據模型發生變化的事件源有:

  • Events:click, mouseover, keyup ...

  • Timers:setInterval、setTimeout

  • XHRs:Ajax(GET、POST ...)

Angular 封裝 Zone來攔截跟蹤異步,一旦發現異步行為,Angular 就會進行變更檢測。

因為數據流是單向的,組件的數據來源只能由父組件進行傳入,所以 Angular 會從上到下,廣度遍歷檢測組件,只要父組件檢測完畢就能繼續檢測子組件。而相比 angularjs,雙向、混亂的數據流方向,會導致重復變更檢測重復多次,直到數據穩定,可能會導致性能問題,或者出現數據和視圖處于不一致的狀態,即渲染過程完成后的視圖不能反映數據的實際狀態。

渲染輸出

當檢測到數據模型變化時,組件需要重新渲染,Angular將運行它的 DOM 生成函數,該函數會生成一個新的 DOM數據結構,該結構對應于組件 View 的新版本。

Angular 在渲染過程中,評估模板表達式并在整個組件樹中調用生命周期鉤子。

注意:綠色標志會多次調用

Angular中單向數據流的示例分析

從生命調用周期來看(綠色有向線),ngAfterViewChecked 標示該組件及子組件視圖輸出完成。看以下一例子:

import {Component, AfterViewChecked} from '@angular/core';
import {Course} from "./course";
@Component({
 selector: 'app-root',
 template: `
 <div class="course">
  <span class="description">{{course.description}}</span>
 </div>
`})
export class AppComponent implements AfterViewChecked {
 course: Course = {
  id: 1,
  description: "Angular For Beginners"
 };

 ngAfterViewChecked() {
  this.course.description += Math.random();
 }
}

上述代碼會在Angular變更檢測周期發生錯誤。組件已經完成 DOM 數據結構輸出,我們還在該組件 ngAfterViewChecked() 方法中修改了數據狀態。這樣導致了視圖渲染后,數據跟視圖狀態不一致。

數據從組件類流向表示它們的DOM數據結構,生成這些DOM數據結構的行為本身就不會導致數據的進一步修改。但我們在 ngAfterView 生命周期發生修改數據行為,Angular 的“單向數據流”規則禁止在一個視圖已經被組合好之后再更新視圖。
這意味著數據模型到視圖過程是單向,不可在視圖后發生數據流發生改變。

感謝你能夠認真閱讀完這篇文章,希望小編分享的“Angular中單向數據流的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湖州市| 大连市| 福贡县| 华阴市| 淮安市| 当阳市| 洪洞县| 保定市| 囊谦县| 韩城市| 闵行区| 微博| 罗山县| 泸溪县| 阜宁县| 景泰县| 罗田县| 贺兰县| 阳谷县| 屯昌县| 沂源县| 桂平市| 福泉市| 嘉义市| 夏河县| 涞水县| 嘉兴市| 孙吴县| 三门县| 兴和县| 乌拉特后旗| 合肥市| 宁武县| 洛川县| 揭阳市| 常宁市| 洛阳市| 武乡县| 武宣县| 清苑县| 凤凰县|