react學(xué)習(xí)記錄

本文首發(fā)于我的博客

前言

前段時(shí)間用vue重構(gòu)完公司的pc項(xiàng)目后閑了兩天,回味了一下vue的整體開發(fā)過程。
現(xiàn)在公司有個(gè)無線項(xiàng)目預(yù)計(jì)是需要重構(gòu)的,因?yàn)楸旧硎腔旌祥_發(fā)的webApp。所以在vue的基礎(chǔ)上直接去讀了react的文檔。
以便于未來看情況是否可以上react native去完成項(xiàng)目重構(gòu)。
留個(gè)學(xué)習(xí)記錄在此,一是好記性不如爛筆頭,二是方便以后回頭查看。

react的生命周期

react開發(fā)過程的注意事項(xiàng)

眾所周知react的黑科技是虛擬dom技術(shù)。
而這種技術(shù)的出發(fā)點(diǎn)就是為了在能自動(dòng)化更新dom的情況上且避免大面積的更新dom(這也就是Angular2為什么與Angular1有如此大不同),從而快準(zhǔn)狠的針對(duì)修改處進(jìn)行修改。
所以我們?cè)陂_發(fā)過程中也應(yīng)該保證此技術(shù)的出發(fā)點(diǎn),避免大面積更新dom。這樣才是好鋼用在刀刃上。

shouldComponentUpdate()

而根據(jù)上面的生命周期圖示,我們會(huì)發(fā)現(xiàn)shouldComponentUpdate鉤子是非常特殊的。
因?yàn)閙vvm的思想我們的核心關(guān)注點(diǎn)基本都是在數(shù)據(jù)上,所以我們?cè)诮换ミ^程中可能要非常頻繁的去調(diào)用this.setState。
這樣就會(huì)頻繁的觸發(fā)shouldComponentUpdate,所以我們必須要確保此鉤子的運(yùn)行速度。

那么一般情況我們只需要對(duì)傳入的值進(jìn)行判斷就好了,比如:


shouldComponentUpdate(nextProps,nextState){
  if(nextState.Number == this.state.Number){
    return false
  }
  return true
}

好,正戲來了!

稍微對(duì)js有點(diǎn)了解的人都會(huì)知道,函數(shù)傳參是值類型,那么如果只在這里不做特殊處理的話就只會(huì)返回false是不符合條件的。

那么我們有哪幾種解決方案呢?

  1. 很經(jīng)典的對(duì)象深拷貝

如果你確定你自己的能力能寫出很完善的深拷貝方法并且性能有所保證是完全可以自己實(shí)現(xiàn)的,原理就是將目標(biāo)的引用類型通過遞歸,層層向下找到最底層的基礎(chǔ)數(shù)據(jù)類型,然后拼裝成一樣結(jié)構(gòu)且數(shù)據(jù)相同的引用類型。

  1. immutable.js庫

有人說這個(gè)庫真的是一個(gè)偉大的發(fā)明,他的存在如果善于利用可以使react的性能十倍十倍的提升

上面這句話是我在社區(qū)內(nèi)看到的,足以證明這個(gè)庫的價(jià)值。

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

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

  • 在React中啟用了javaScript的語法擴(kuò)展,也就是所謂的JSX,JSX可以讓我們?cè)趈avaScript中書...
    summer_味道制造閱讀 218評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評(píng)論 25 708
  • 楠楠(化名)這次來參加課程,主要是想看清楚自己。她覺得現(xiàn)狀讓她很辛苦,未來也不知道走向何方。和家里人關(guān)系都不太好,...
    觀心閣筆記閱讀 737評(píng)論 0 0
  • 突然間想明白,我該做什么!必須記下這種感覺,免得我迷茫時(shí)忘了初心! 對(duì)于銷售,我是一時(shí)半會(huì)突破不了自己,可能不是最...
    自由飛翔的我閱讀 271評(píng)論 0 0
  • 有個(gè)朋友對(duì)我講,她不習(xí)慣將文字袒露在光天化日之下,那種感覺就好像把自己脫光了曝曬在陽光底下。對(duì)她而言,文字是自己內(nèi)...
    月出雅南閱讀 239評(píng)論 1 0

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