React生命週期函數以及其常用應用場景

React生命週期

先說一下react 生命週期的變動(目前react 最新版本是v16.4.2):

以V6.3爲中間點,v16.3之後的版本最大的變動莫過於生命週期去掉了以下三個

componentWillMount (render之前執行,只執行一次)

componentWillReceiveProps

componentWillUpdate (每次更新,render之前執行)

 

同時加了兩個新的生命週期函數

getDerivedStateFromProps

getSnapshotBeforeUpdate

當然,這個更替是緩慢的,在整個16版本里都能無障礙的使用舊的生命週期,但值得注意的是,舊的生命週期(unsafe)不能和新的生命週期同時出現在一個組件,否則會報錯 “你使用了一個不安全的生命週期”

 

具體的生命週期函數及其應用場景

 

constructor

用於初始化內部狀態,唯一可以直接修改state的地方

 

getDerivedStateFromProps

1.當state需要從props 初始化使用

2.儘量不要使用:維護兩者狀態一致性會增加複雜度

3.每次render都會調用

4.典型場景:表單控件獲取默認值

 

componentDidMount

1:UI渲染完成後調用

2:只執行一次

3:典型場景:獲取外部資源

 

componentWillUnmount

1.組件移除時被調用

2.典型場景:資源

 

getSnapshotBeeforeUpdate

1.在頁面render 之前調用,state已更新

2.典型場景:獲取render之前的Dom

 

componentDidUpdate

1.每次UI更新時被調用

2.典型場景:頁面需要根據props 變化重新獲取

 

shouldComponentUpdate

1.決定VIrtual Dom 是否要重繪

2.一般可以由PureComponent自動實現

3.典型場景:性能提升

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章