React 生命周期函數

React的生命周期函數:在某一時刻組件會自動調用執(zhí)行的函數。
下面分階段給出各個生命周期函數。

React生命周期

組件初始化(Initialization)階段

constructor(props)

組件掛載(Mounting)階段

componentWillMount()
在組件即將被掛載到頁面時執(zhí)行

render()
組件掛載時執(zhí)行

componentDidMount()
組件被掛載到頁面后自動執(zhí)行

組件更新(Updation)階段

props、states發(fā)生變化時進入該階段
如果:
一個組件要從父組件接收參數 && 該組件已經存在于父組件中,則在其
執(zhí)行shouldComponentUpdate()之前,執(zhí)行:
componentWillReceiveProps()

shouldComponentUpdate()
組件需要更新嗎?返回true,則組件更新,否則不更新;

componentWillUpdate()
組件被更新前執(zhí)行,前提是shouldComponentUpdate()返回了true;

render()
重新渲染,更新組件;

componentDidUpdate()
組件更新完成后執(zhí)行。

組件卸載(UnMounting)階段

componentWillUnmount()

  • 該組件即將被移除時執(zhí)行

render() 函數必須定義,因為它在Component中并沒有被實現。

生命周期函數的應用場景:

1. 用shouldComponentUpdate() 避免重復渲染

//避免無謂渲染,提升性能
  shouldComponentUpdate(nextProps, nextState) {   
    if(nextProps.content !== this.props.content) {
      return true;
    } else {
      return false;
    }
  }

2. componentDidMount()

異步Ajax請求不適合被寫在render()中,因為那樣會導致多次請求,
它更適合被放在componentDidMount()中。

積累React中性能優(yōu)化的Tips:

  • this綁定放在組件的constructor中(尚未詳細講解);
  • setState() 內置了優(yōu)化的方式(異步);
  • 虛擬DOM內部優(yōu)化了比對和重新渲染的效率;
  • 生命周期函數的使用;
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 什么是生命周期函數 組件中在某個階段會自動執(zhí)行的函數。比如我們執(zhí)行使用render函數,在prop或者state變...
    Byhua閱讀 357評論 0 2
  • 組件的詳細說明 通過Reac.createClass({...})創(chuàng)建組件的時候,應該有一個render()方法,...
    涼介Seven閱讀 350評論 0 0
  • 1,constructor()函數 *執(zhí)行的時間:組件被加載前最先調用,并且僅調用一次 *作用:定義狀態(tài)機變量 *...
    折梅踏雪閱讀 427評論 0 0
  • 1. mounting階段執(zhí)行的生命周期函數 constructor()static getDerivedStat...
    靜簡明閱讀 12,093評論 0 0
  • 作為一個合格的開發(fā)者,不要只滿足于編寫了可以運行的代碼。而要了解代碼背后的工作原理;不要只滿足于自己的程序...
    六個周閱讀 8,684評論 1 33

友情鏈接更多精彩內容