&& 或是 ? : 條件渲染的方式
上面的兩種條件渲染的方式,jsx式的元件或是函式式的元件,沒有滿足渲染條件的元件不會被渲染,也就不會觸發componentwillmount
,componentdidmount
等週期函式。
componentwillmount
1.可以state
,但是不會觸發重新render
,因為還沒有進行到render
那一步。
2.在這裡盡量不要去進行ajax等請求,因為你不能保證請求會在mount之前完成,也就是說元件還沒有掛載,並不一定能進行setstate.
componentwillreceiveprops
1.在父元件發生重新render
或者是props
改變的時候會觸發。
2.在元件初始化階段接收props
不會觸發,因為這個週期函式需要比較新舊props
,但是初始化階段沒有舊的props
.
何時觸發render
在元件執行階段進行的setstate
或者是觸發componentwillreceiveprops
函式,將會由shouldcomponentupdate
來決定是否進行重新render
,而預設的shouldcomponentupdate
總是返回true,也就會造成重新render
。
但是,重新render
不代表dom元素會更新,因為react生成的首先是vnode,只有dom元素對應在vnode中的那部分改變了才會更新。
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...