參照官網教程學習後的總結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...