NG4 元件生命週期鉤子

2021-08-18 22:11:37 字數 2026 閱讀 2135

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...