react的生命週期和diff演算法

2021-08-18 09:34:49 字數 1140 閱讀 5296

初學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 作用於元件的例項,在例項建立時呼叫一次,用於初始...