angular 指令的生命週期,它是用來記錄指令從建立、應用及銷毀的過程。angular 提供了一系列與指令生命週期相關的鉤子,便於我們監控指令生命週期的變化,並執行相關的操作。angular 中所有的鉤子如下圖所示:
#分類##指令與元件共有的鉤子
ngonchanges
ngoninit
ngdocheck
ngondestroy
##元件特有的鉤子
ngaftercontentinit
ngaftercontentchecked
ngafterviewinit
ngafterviewchecked
#呼叫順序
ngonchanges - 當資料繫結輸入屬性的值發生變化時呼叫
ngoninit - 在第一次 ngonchanges 後呼叫
ngdocheck - 自定義的方法,用於檢測和處理值的改變
ngaftercontentinit - 在元件內容初始化之後呼叫
ngaftercontentchecked - 元件每次檢查內容時呼叫
ngafterviewinit - 元件相應的檢視初始化之後呼叫
ngafterviewchecked - 元件每次檢查檢視時呼叫
ngondestroy - 指令銷毀前呼叫
#實現要實現生命週期鉤子,只需實現對應的介面即可,如實現ngonchanges鉤子只需實現onchanges介面即可:
export class ***component implements oninit, onchanges, docheck, aftercontentinit, aftercontentchecked, afterviewchecked, afterviewinit, ondestroy
##ngonchanges
@input屬性(輸入屬性)發生變化時,會呼叫。非此屬性,不會呼叫。
當輸入屬性為物件時,當物件的屬性值發生變化時,不會呼叫,當物件的引用變化時會觸發。
先於ngoninit呼叫。
ngonchanges(changes: ******changes): void
如果輸入屬性發生變化,輸出結果如下:
ngdocheck() 是angular中的變更檢測機制.它由 zone.js 來實現的.其行為是只要你的angular中的某個元件發生非同步事件.就會檢查整個元件樹,以保證元件屬性的變化或頁面的變化是同步的.所以 ngdocheck() 的觸發相當頻繁的.並且是我們無法預料到的.也許我們在頁面上的乙個無意識操作,就會觸發幾個甚至幾十個的 ngdocheck() 生命週期鉤子.
oldusername:string;
changedetected:boolean = false;
nochangecount:number = 0;
ngdocheck(): void
if(this.changedetected)else
this.changedetected=false;
}
控制台輸出結果如下:
#view鉤子
###afterviewinit和afterviewchecked
定義:整個檢視組裝完畢時呼叫
注意:afterviewinit在afterviewchecked之前呼叫
子元件的view鉤子(包括afterviewinit和afterviewchecked)呼叫完畢,父元件的view鉤子才呼叫
view鉤子禁止改變檢視中繫結的資料值,需放入另乙個js週期中,如settimeout
react(四)元件的生命週期
元件的生命週期 當元件第一次渲染時,依次呼叫的過程 1 constructor 1 不是所有元件均會定義該函式 2 定義該函式的目的 this.state 例如,已有成員函式clickbtn,繫結this指向的方式可以是this.clickbtn this.clickbtn.bind this 2 ...
React(三) 元件的生命週期
react元件的生命週期分為三大部分 1 掛載 mount 我們把元件渲染,並且構造dom元素插入到頁面的過程稱為元件的掛載。元件掛載的過程 元件掛載先關函式,只在元件掛載的時候呼叫,在元件更新時不會執行 import react from react class test extends reac...
vue元件生命週期鉤子函式
vue元件在整個生命週期裡面提供了一些函式,可以在內部實現一些業務邏輯,乙個元件建立或者vue例項建立之後,內部會做一些初始化事件與生命週期相關的配置,元件的生命週期鉤子函式大致可以分為三個階段 初始化 執行中 銷毀。1.beforecreate 在例項初始化之後,資料觀測 data observe...