vue和react(shouldComponentUpdate )性能異同

React 和 Vue 有許多相似之處,它們都有:

  • 使用 Virtual DOM
  • 提供了響應(yīng)式 (Reactive) 和組件化 (Composable) 的視圖組件。
  • 將注意力集中保持在核心庫,而將其他功能如路由和全局狀態(tài)管理交給相關(guān)的庫。

由于有著眾多的相似處,我們會(huì)用更多的時(shí)間在這一塊進(jìn)行比較。這里我們不只保證技術(shù)內(nèi)容的準(zhǔn)確性,同時(shí)也兼顧了平衡的考量。我們需要承認(rèn) React 比 Vue 更好的地方,比如更豐富的生態(tài)系統(tǒng)。

運(yùn)行時(shí)性能

React 和 Vue 都是非??斓模运俣炔⒉皇窃谒鼈冎凶鲞x擇的決定性因素。對于具體的數(shù)據(jù)表現(xiàn),可以移步這個(gè)第三方 benchmark,它專注于渲染/更新非常簡單的組件樹的真實(shí)性能。

優(yōu)化

在 React 應(yīng)用中,當(dāng)某個(gè)組件的狀態(tài)發(fā)生變化時(shí),它會(huì)以該組件為根,重新渲染整個(gè)組件子樹。

如要避免不必要的子組件的重渲染,你需要在所有可能的地方使用 PureComponent,或是手動(dòng)實(shí)現(xiàn) shouldComponentUpdate 方法。同時(shí)你可能會(huì)需要使用不可變的數(shù)據(jù)結(jié)構(gòu)來使得你的組件更容易被優(yōu)化。

然而,使用 PureComponentshouldComponentUpdate 時(shí),需要保證該組件的整個(gè)子樹的渲染輸出都是由該組件的 props 所決定的。如果不符合這個(gè)情況,那么此類優(yōu)化就會(huì)導(dǎo)致難以察覺的渲染結(jié)果不一致。這使得 React 中的組件優(yōu)化伴隨著相當(dāng)?shù)男闹秦?fù)擔(dān)。

在 Vue 應(yīng)用中,組件的依賴是在渲染過程中自動(dòng)追蹤的,所以系統(tǒng)能精確知曉哪個(gè)組件確實(shí)需要被重渲染。你可以理解為每一個(gè)組件都已經(jīng)自動(dòng)獲得了 shouldComponentUpdate,并且沒有上述的子樹問題限制。

Vue 的這個(gè)特點(diǎn)使得開發(fā)者不再需要考慮此類優(yōu)化,從而能夠更好地專注于應(yīng)用本身。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容