大家先看一張關於元件掛載的經典的:下面一一說一下這幾個生命週期的意義:
object getdefaultprops()執行過一次後,被建立的類會有快取,對映的值會存在
this.props
,前提是這個prop不是父元件指定的
這個方法在物件被建立之前執行,因此不能在方法內呼叫this.props
,另外,注意任何getdefaultprops()
返回的物件在例項中共享,不是複製
object getinitialstate()控制項載入之前執行,返回值會被用於state的初始化值
void componentwillmount()執行一次,在初始化
render
之前執行,如果在這個方法內呼叫setstate
,render()
知道state發生變化,並且只執行一次
reactelement render()render的時候會呼叫
render()
會被呼叫
呼叫render()
方法時,首先檢查this.props
和this.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()
方法,componentwillupdate
和componentdidupdate
方法也不會被呼叫
預設情況下,shouldcomponentupdate
方法返回true防止state
快速變化時的問題,但是如果·state
不變,props
唯讀,可以直接覆蓋shouldcomponentupdate
用於比較props
和state
的變化,決定ui是否更新,當元件比較多時,使用這個方法能有效提高應用效能
void當componentwillupdate(
object nextprops, object
nextstate
)
props
和state
發生變化時執行,並且在render
方法之前執行,當然初始化render時不執行該方法,需要特別注意的是,在這個函式裡面,你就不能使用this.setstate
來修改狀態。這個函式呼叫之後,就會把nextprops
和nextstate
分別設定到this.props
和this.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...