React生命週期

2021-08-15 03:52:51 字數 1621 閱讀 7627

react component通過其定義的幾個函式來控制項在生命週期各個階段的動作。

先看一張經典的:

與生命週期相關的函式:

1~constructor(props,context)

建構函式 在建立元件的時候呼叫一次

2~void componentwillmount()

在元件掛載之前呼叫一次。如果在這個函式裡面呼叫setstate,本次的render函式可以看到更新後的state,並且只渲染一次。

3~void componentdidmount()

在元件掛載之後呼叫一次,這個時候子元件也都掛載好了,可以使用refs。

4~void componentwillreceiveprops(nextprops)

props是父元件傳遞給子元件的。父元件發生render的時候子元件就會呼叫componentwillreceiveprops (不管props有沒有更新也不管父子元件之間有沒有資料交換)。

5~bool shouldcomponentupdate(nextprops,nextstate)

元件掛載之後,每次呼叫setstate後呼叫shouldcomponentupdate判斷是否需要重新渲染元件。預設返回true 需要重新渲染render。在比較複雜的應用裡,有一些資料的改變並不影響介面展示,可以在這裡做判斷,優化渲染效率。

6~void componentwillupdate(nextprops,nextstate)

shouldcomponentupdate返回true或者呼叫forceupdate之後,componentwillupdate會被呼叫。

7~void componentdidupdate()

除了首次render之後呼叫componentdidmount,其它render結束之後都是呼叫componentdidupdate。

componentwillmount,componentdidmount和componentwillupdate,componentdidupdate可以對應起來。區別在於,前者只有在掛載的時候會被呼叫;而後者在以後的每次更新渲染之後都會被呼叫。

render是乙個react元件所必不可少的核心函式(上面的其他函式都不是必須的)。不要再render裡面修改state。

8~void componentwillunmount()

元件被解除安裝的時候呼叫。一般在componentdidmount裡面註冊的事件需要在這裡刪除。

最後,在react中觸發render更新的方式

1 首次渲染initial render

2 呼叫this.setstate 並不是每一次setstate都會觸發一次render,react可能會合併操作,再一次行進行render。

3 父元件發生更新 一般就是props發生改變,但是就算props沒有改變或者父子元件之間沒有資料交換也會觸發render

4 呼叫this.forceupdate

React 生命週期 生命週期方法

生命週期 掛載 更新 解除安裝 元件被建立 執行初始化 並被掛載到dom中,完成元件的第一次渲染 constructor props getderivedstatefromprops props,state render componentdidmount 元件被建立時會首先呼叫元件的構造方法,接受...

react 生命週期

首次例項化 例項化完成後的更新 元件已存在時的狀態改變 生命週期共提供了10個不同的api。1.getdefaultprops 作用於元件類,只呼叫一次,返回物件用於設定預設的props,對於引用值,會在例項中共享。2.getinitialstate 作用於元件的例項,在例項建立時呼叫一次,用於初始...

react生命週期

盜圖一張 第一次進入頁面列印結果 1 parent constructor 2 parent conponentwillmount 3 parent render 4 initial render constructor 5 componentwillmount 6 render 7 compone...