初學react,只知道它的生命週期幾個諸如componentwillmount、componentdidmount、render。現在想具體地學習它,網上有一張很好的解釋了生命週期的過程。
這張圖很好地說明了react元件載入到dom以及更新的過程。其中componentwillmount、componentdidmount、componentwillunmount只會觸發一次。
其中比較重要的兩個生命週期函式
1.componentdidmount
這裡一般是用與ajax請求用的。之所以不用componentwillmount是因為如果setstate比render慢,就是出現白屏。componentdidmount 可以加個loadind提高使用者體驗。
2.shouldcomponentupdate(nextprops, nextstate)
shouldcomponentupdate(nextprops, nextstate)
render()
}export default class parent extends component
}componentdidmount() )
}, 1000);
}render()
}父元件每秒呼叫一次setstate更新元件,子元件也每次都會呼叫shouldcomponentupdate。如果沒有變化就返回false。當資料很多時比對時間就會很長。我們可以設定諸如if ... return false; 提高效能。
react diff 是react效能的基礎。是在原diff演算法上結合web特性的大膽改進。例如忽略跨層級的移動操作,用key讓同一層級的節點進行區分,較少重新渲染的次數。
在tree層次上,相同顏色方框內的 dom 節點進行比較。
在元件層次上,同一型別的元件,按照原策略繼續比較 virtual dom tree,如果不是同一型別元件,則替換整個元件下的所有子節點。
在element層次上,react只提供插入,移動,刪除。所以一般需要加key來輔助判斷,讓元件效能更好。
React 生命週期 生命週期方法
生命週期 掛載 更新 解除安裝 元件被建立 執行初始化 並被掛載到dom中,完成元件的第一次渲染 constructor props getderivedstatefromprops props,state render componentdidmount 元件被建立時會首先呼叫元件的構造方法,接受...
vue生命週期和react生命週期對比。
生命週期 指的是元件從初始化開始到結束的過程 或者是生命週期是描述元件從開始到結束的過程,每個元件都具有生命週期,都對元件通過生命週期給予的鉤子函式進行管理。鉤子函式指的是系統某些狀態和引數發生改變的時候,系統立馬去通知對應處理的函式叫做所有的生命週期鉤子自動繫結vue的 this 上下文到例項中,...
react 生命週期
首次例項化 例項化完成後的更新 元件已存在時的狀態改變 生命週期共提供了10個不同的api。1.getdefaultprops 作用於元件類,只呼叫一次,返回物件用於設定預設的props,對於引用值,會在例項中共享。2.getinitialstate 作用於元件的例項,在例項建立時呼叫一次,用於初始...