初探React之生命週期

2021-07-12 01:54:59 字數 1913 閱讀 1914

參照官網教程學習後的總結

react的週期可分為三個階段:

例項化

存在期

銷毀&清理期

這三個階段分別執行不同的任務。例項化是在react第一次生成真實的dom時的週期,之後進入存在期。存在期react元件時時刻刻監聽props 和 state的變化,當這兩個屬性發生變化時,元件重新render。清理期在元件從真實的dom中移除時發生。

分別對應的函式是:

例項化

getdefaultprops

getinitialstate

componenetwillmount

render

componenetdidmount

存在期componenetwillreceiveprops

shouldcomponenetupdate

componenetwillupdate

render

componentdidupdate

銷毀期componentwillunmount

每個階段的事件依次發生。

react首先通過createclass建立元件。這時候元件首先呼叫getdefaultprops函式(此函式在建立元件是呼叫,並不是掛載時呼叫),來設定自己的props屬性。假如這個元件有父元件的話,父元件依然可以在渲染時,通過如下方式設定子元件的props(關於父元件在什麼階段傳值還未完全弄清楚,這裡存疑)。

...

render ()

...

這個時候子元件可通過this.props.property來獲取property的值1234。實際上在父元件給子元件傳值的時候,一般採用這種方式。可以把這中方式看作一種「從上往下」的值傳遞方式。

之後呼叫getinitialstate(mounting之前呼叫),並且可通過this.state.data來獲取state屬性中的值。

...

getinitialstate ()

}...

需要注意的是,getinitialstate和getdefaultprops都只執行一次。之後將會進行第一次渲染。

componentwillmount在進行第一次渲染(即render)之前發生,可以通過這個函式做一些事情,比如從伺服器獲取json資料,再通過setstate來改變state的值(雖然改變了state的值,但是元件只會進行一次渲染)。

同樣的componentdidmount在第一次渲染發生之後執行。在這裡可以執行一些操作。

說起存在期,不得不提到的兩個屬性就是state和props。porps用於父元件向子元件的傳值,子元件會監聽props的變化,假如值發生了變化,則判斷是否需要重新渲染。通過這種方式,父元件可以修改傳遞的值,來誘使子元件進行重新渲染,從而保持資料的統一性,這就是一種「從上而下」的單向資料繫結。

這時候用於監聽的兩個函式是:

componentwillreceiveprops(nextprops) >

div>);

},handler(changedvalue) );

}...

子元件

...

this.props.handler(value);

...

componentwillunmount函式在元件從dom中移除時觸發。可在這個函式中進行一些收尾工作。

componentwillunmount() {...

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...