react 效能優化

2021-09-12 06:31:03 字數 1074 閱讀 7746

在shouldcomponentupdate()方法中判斷props和state是否改變,若未改變則無需渲染。有些情況如父元件的props或state改變了,但是子元件其實未改變,若不判斷的話會導致子元件一起被渲染。

shouldcomponentupdate(nextprops , nextstate)

return true;

}

**中判定用的===,這個是引用判定,只判定兩個物件的引用是否一樣,不判斷內容。

如果一層層的往深層去比較如item.name這樣去比較,稱為神比較,這樣效能不高。這種案發就只執行上述的一層物件。這是淺比較。可以通過繼承purecomponent元件省去這個比較。

3.淺比較出現的問題:當props的屬性有乙個陣列物件,那麼陣列物件在更新時採用push,pop,shift,unshift,splice時,由於陣列物件的引用還是沒有變,會導致shouldcomponent返回false,最終不會重新渲染。

4.解決淺比較存在的問題:推薦把state變為不可變物件。即當state的屬性改變時,應該建立乙個新的屬性物件,不在原本基礎之上進行修改。

4.1 屬性為(不可變型別,如:數字,字串,布林,null,undefined):無需處理,本身會new

4.2 屬性為陣列:新增元素呼叫concat方法,es6  ...語法;擷取部分元素時呼叫slice方法;

4.3 過濾部分元素時呼叫filter方法。

4.1  this.setstate(prestate => ())

this.setstate(prestate => ())

4.2 this.setstate(prestate => ())

4.3 this.setstate(prestate => ()}))

5. 屬性為普通物件(除字串,陣列)

使用object.assign方法

this.setstate(prestate => (,prestate.ower, )

})) this.setstate(prestate => (

}))

React 效能優化

避免重複渲染 當乙個元件的props或者state改變時,react通過比較新返回的元素和之前渲染的元素來決定是否有必要更新實際的dom。當他們不相等時,react會更新dom。在一些情況下,你的元件可以通過重寫這個生命週期函式shouldcomponentupdate來提公升速度,它是在重新渲染過...

React效能優化

一 事件的優化 1 建構函式中宣告 export default mycom extends component render fun 此中方式只會在建構函式中建立一次,效能最好,但無法傳值 2 在元件中宣告 export default mycom extends component fun 該方...

React 效能優化

profiler api profiler 衡量react應用程式渲染的頻率以及渲染的 成本 是多少。其目的是幫助識別應用程式中速度較慢的部分,並可能從諸如memoization 之類的優化中受益。分析會增加一些額外的開銷,因此在生產版本中將其禁用。它只會進行淺層比較,因此,如果道具或狀態可能以淺層...