react生命週期鉤子

2022-04-26 05:26:06 字數 3071 閱讀 2264

大家先看一張關於元件掛載的經典的:

下面一一說一下這幾個生命週期的意義:

object getdefaultprops()
執行過一次後,被建立的類會有快取,對映的值會存在this.props,前提是這個prop不是父元件指定的 

這個方法在物件被建立之前執行,因此不能在方法內呼叫this.props,另外,注意任何getdefaultprops()返回的物件在例項中共享,不是複製

object getinitialstate()
控制項載入之前執行,返回值會被用於state的初始化值

void componentwillmount()
執行一次,在初始化render之前執行,如果在這個方法內呼叫setstaterender()知道state發生變化,並且只執行一次

reactelement render()
render的時候會呼叫render()會被呼叫 

呼叫render()方法時,首先檢查this.propsthis.state返回乙個子元素,子元素可以是dom元件或者其他自定義復合控制項的虛擬實現 

如果不想渲染可以返回null或者false,這種場景下,react渲染乙個標籤,當返回null或者false時,reactdom.finddomnode(this)返回null 

render()方法是很純淨的,這就意味著不要在這個方法裡初始化元件的state,每次執行時返回相同的值,不會讀寫dom或者與伺服器互動,如果必須如伺服器互動,在componentdidmount()方法中實現或者其他生命週期的方法中實現,保持render()方法純淨使得伺服器更準確,元件更簡單

void componentdidmount()
在初始化render之後只執行一次,在這個方法內,可以訪問任何元件,componentdidmount()方法中的子元件在父元件之前執行

從這個函式開始,就可以和 js 其他框架互動了,例如設定計時 settimeout 或者 setinterval,或者發起網路請求

boolean shouldcomponentupdate(

object nextprops, object

nextstate

}

這個方法在初始化render時不會執行,當props或者state發生變化時執行,並且是在render之前,當新的props或者state不需要更新元件時,返回false

shouldcomponentupdate: function(nextprops, nextstate)
shouldcomponentupdate方法返回false時,就不會執行render()方法,componentwillupdatecomponentdidupdate方法也不會被呼叫

預設情況下,shouldcomponentupdate方法返回true防止state快速變化時的問題,但是如果·state不變,props唯讀,可以直接覆蓋shouldcomponentupdate用於比較propsstate的變化,決定ui是否更新,當元件比較多時,使用這個方法能有效提高應用效能

void

componentwillupdate(

object nextprops, object

nextstate

)

propsstate發生變化時執行,並且在render方法之前執行,當然初始化render時不執行該方法,需要特別注意的是,在這個函式裡面,你就不能使用this.setstate來修改狀態。這個函式呼叫之後,就會把nextpropsnextstate分別設定到this.propsthis.state中。緊接著這個函式,就會呼叫render()來更新介面了

void

componentdidupdate(

object prevprops, object

prevstate

)

元件更新結束之後執行,在初始化render時不執行

void

componentwillreceiveprops(

object

nextprops

)

props發生變化時執行,初始化render時不執行,在這個**函式裡面,你可以根據屬性的變化,通過呼叫this.setstate()來更新你的元件狀態,舊的屬性還是可以通過this.props來獲取,這裡呼叫更新狀態是安全的,並不會觸發額外的render呼叫

componentwillreceiveprops: function(nextprops) );

}

void componentwillunmount()
當元件要被從介面上移除的時候,就會呼叫componentwillunmount(),在這個函式中,可以做一些元件相關的清理工作,例如取消計時器、網路請求等

React 生命週期鉤子

es6 class構造方法,接收乙個props屬性物件,props由父元件傳入,如果父元件未傳入,則指向自身。通常用於初始化state,以及繫結事件處理方法等工作 元件被掛載到dom前,只會呼叫1次,一般用用更靠前的constructor代替,在其中呼叫this.setstate 不會引起元件重新渲...

React生命週期鉤子

我一直覺得這張圖描述的真是太好了,首先,先看圖。初始化階段 constructor props props的初始設定是在元件的外面 或者在內部使用 靜態屬性 static class home extends react.component home.defaultprops 或者在內部 stati...

React生命週期鉤子函式

定義 react中元件有生命週期,也就是說也有很多鉤子函式供我們使用,元件的生命週期,我們會分為四個階段,初始化 執行中 銷毀 錯誤處理 16.3之後 注意 生命週期鉤子函式一定不要寫成箭頭函式 react 16.x 版本中共有 10個鉤子函式 四個階段 分別為 1 constructor prop...