成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

為什么你要在React.js中使用Immutable Data

lindroid / 2811人閱讀

摘要:為什么你要在中使用熟悉的都應(yīng)該知道,是一個(gè)的框架,為了解決更新的問題,使用了,通過修改,來實(shí)現(xiàn)高效的更新??偨Y(jié)就是使用通過使用,可以讓我們更容易的去處理緩存回退數(shù)據(jù)變化檢測(cè)等問題,簡(jiǎn)化我們的開發(fā)。

簡(jiǎn)單的來講,immutable.js通過structural sharing來解決的性能問題。
看看immutable.js是如何做的當(dāng)我們發(fā)生一個(gè)set操作的時(shí)候,immutable.js會(huì)只clone它的父級(jí)別以上的部分,其他保持不變,這樣大家可以共享同樣的部分,可以大大提高性能。
為什么你要在React.js中使用Immutable Data熟悉React.js的都應(yīng)該知道,React.js是一個(gè)UI = f(states)的框架,為了解決更新的問題,React.js使用了virtual dom,virtual dom通過diff修改dom,來實(shí)現(xiàn)高效的dom更新。聽起來很完美吧,但是有一個(gè)問題。當(dāng)state更新時(shí),如果數(shù)據(jù)沒## 標(biāo)題文字 ##變,你也會(huì)去做virtual dom的diff,這就產(chǎn)生了浪費(fèi)。
這種情況其實(shí)很常見,可以參考flummox這篇文章當(dāng)然你可能會(huì)說,你可以使用PureRenderMixin來解決呀,PureRenderMixin是個(gè)好東西,我們可以用它來解決一部分的上述問題,但是如果你留心的話,你可以在文檔中看到下面這段提示:
PureRenderMixin只是簡(jiǎn)單的淺比較,不使用于多層比較。那怎么辦??
自己去做復(fù)雜比較的話,性能又會(huì)非常差。
方案就是使用immutable.js可以解決這個(gè)問題。因?yàn)槊恳淮蝧tate更新只要有數(shù)據(jù)改變,那么PureRenderMixin可以立刻判斷出數(shù)據(jù)改變,可以大大提升性能。
總結(jié)就是:使用PureRenderMixin + immutable.js
通過使用Immutable Data,可以讓我們更容易的去處理緩存、回退、數(shù)據(jù)變化檢測(cè)等問題,簡(jiǎn)化我們的開發(fā)。

mutable data structure做diff需要遍歷
immutable只要對(duì)比一下reference是不是一個(gè)就行了

react做virtual dom的diff會(huì)快

首先,我們有必要來劃分一下邊界,哪些數(shù)據(jù)需要使用不可變數(shù)據(jù),哪些數(shù)據(jù)要使用原生js數(shù)據(jù)結(jié)構(gòu),哪些地方需要做互相轉(zhuǎn)換?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/104160.html

相關(guān)文章

  • React.js 最佳實(shí)踐(2016)_鏈接修正版

    摘要:譯者按最近依舊如火如荼相信大家都躍躍欲試我們團(tuán)隊(duì)也開始在領(lǐng)域有所嘗試年應(yīng)該是逐漸走向成熟的一年讓我們一起來看看國(guó)外的開發(fā)者們都總結(jié)了哪些最佳實(shí)踐年在全世界都有很多關(guān)于新的更新和開發(fā)者大會(huì)的討論關(guān)于去年的重要事件請(qǐng)參考那么年最有趣的問題來了我 譯者按:最近React(web/native)依舊如火如荼,相信大家都躍躍欲試,我們團(tuán)隊(duì)也開始在React領(lǐng)域有所嘗試. 2016年應(yīng)該是Reac...

    syoya 評(píng)論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.16 - 淺入淺出 JavaScript 函數(shù)式編程

    摘要:函數(shù)式編程,一看這個(gè)詞,簡(jiǎn)直就是學(xué)院派的典范。所以這期周刊,我們就重點(diǎn)引入的函數(shù)式編程,淺入淺出,一窺函數(shù)式編程的思想,可能讓你對(duì)編程語言的理解更加融會(huì)貫通一些。但從根本上來說,函數(shù)式編程就是關(guān)于如使用通用的可復(fù)用函數(shù)進(jìn)行組合編程。 showImg(https://segmentfault.com/img/bVGQuc); 函數(shù)式編程(Functional Programming),一...

    csRyan 評(píng)論0 收藏0
  • 【譯】JavaScript 框架的探索與變遷(下)

    摘要:對(duì)此沒有任何限制,它不關(guān)心這個(gè)。一種控制變化的辦法是不可改變的,持久化的數(shù)據(jù)結(jié)構(gòu)??偨Y(jié)檢測(cè)變化時(shí)開發(fā)中的核心問題,而框架們以各種方式解決這個(gè)問題。因?yàn)榻M件內(nèi)的變化是不被允許的。 AngularJS:臟檢查 我不知道什么更新了,所以當(dāng)更新的時(shí)候,我只能檢查所有的東西。 AngularJS 類似于 Ember,當(dāng)狀態(tài)改變的時(shí)候,必須人工去處理。但不同的是,AngularJS 從不同的角度來...

    CollinPeng 評(píng)論0 收藏0
  • 深入理解js

    摘要:詳解十大常用設(shè)計(jì)模式力薦深度好文深入理解大設(shè)計(jì)模式收集各種疑難雜癥的問題集錦關(guān)于,工作和學(xué)習(xí)過程中遇到過許多問題,也解答過許多別人的問題。介紹了的內(nèi)存管理。 延遲加載 (Lazyload) 三種實(shí)現(xiàn)方式 延遲加載也稱為惰性加載,即在長(zhǎng)網(wǎng)頁中延遲加載圖像。用戶滾動(dòng)到它們之前,視口外的圖像不會(huì)加載。本文詳細(xì)介紹了三種延遲加載的實(shí)現(xiàn)方式。 詳解 Javascript十大常用設(shè)計(jì)模式 力薦~ ...

    caikeal 評(píng)論0 收藏0
  • [譯] 前端攻略-從路人甲到英雄無敵二:JavaScript 與不斷演化的框架

    摘要:一般來說,聲明式編程關(guān)注于發(fā)生了啥,而命令式則同時(shí)關(guān)注與咋發(fā)生的。聲明式編程可以較好地解決這個(gè)問題,剛才提到的比較麻煩的元素選擇這個(gè)動(dòng)作可以交托給框架或者庫(kù)區(qū)處理,這樣就能讓開發(fā)者專注于發(fā)生了啥,這里推薦一波與。 本文翻譯自FreeCodeCamp的from-zero-to-front-end-hero-part。 繼續(xù)譯者的廢話,這篇文章是前端攻略-從路人甲到英雄無敵的下半部分,在...

    roadtogeek 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<