摘要:發(fā)現(xiàn)很有趣,所以我把這個項(xiàng)目用重構(gòu)了一次。舊的版本是用全家桶,就是構(gòu)建的在的的分支上。其次就是性能優(yōu)化的問題。就是無論如何,只要和發(fā)生了變化,就要發(fā)生一次。因?yàn)楹蛿?shù)據(jù)已經(jīng)解耦了。會檢測被觀察的數(shù)據(jù),只要數(shù)據(jù)發(fā)生改變,它就會去重新渲染。
背景
前一陣子,我剛寫了篇React全家桶實(shí)戰(zhàn),介紹了下我用react全家桶構(gòu)建一個react webapp的中遇到的一些問題。后來,我發(fā)現(xiàn)了mobx。然后靜下心去看一看它的文檔。發(fā)現(xiàn)很有趣,所以我把這個項(xiàng)目用mobx重構(gòu)了一次。舊的版本是用react全家桶,就是react+redux構(gòu)建的, 在github的old-verson的分支上。大家有興趣也可以看看。
源碼地址傳送門
如果可以,希望大家star一下,給我點(diǎn)鼓勵。感謝~
首先redux很強(qiáng)大,單項(xiàng)數(shù)據(jù)流的思想,可以讓我們很好地去將數(shù)據(jù)和UI解耦。我們要修改UI,只能通過發(fā)起一個action給reducer,然后reducer經(jīng)過一系列操作,得出一些新的state,然后這個state便會讓UI更新。但是有個比較蛋疼的地方就是,我們要寫得太多了,我們最起碼要寫一個actionType, 一個actionCreator, 一個reducer,當(dāng)然還得創(chuàng)建一個store。如果有異步操作,那還得寫更多一點(diǎn),這會讓我開發(fā)起來的時候比較枯燥。不知道你們有沒有,反正,我是有時候想到要寫那么多東西,我就有點(diǎn)動力不足了。
其次就是性能優(yōu)化的問題。就react中每個組件都有一個shouldComponentUpdate的函數(shù),不過它默認(rèn)總是返回true的。就是無論如何,只要state和props發(fā)生了變化,就要發(fā)生一次render。但是有時候是不需要更新的。雖然可以引入immutable-js來創(chuàng)建js不可變的數(shù)據(jù),加上在shouldComponentUpdate搞點(diǎn)判斷。但是,額,好吧,我覺得引入也挺麻煩的,感覺有點(diǎn)難以在現(xiàn)有的項(xiàng)目里插入(大神別噴我~)。
最后呢,mobx可以比較好解決我上面的兩個問題。mobx的寫法不難,看一個下午,就可以開始動手寫代碼了。而且對在原來代碼上修改可以比較迅速。因?yàn)閁I和數(shù)據(jù)已經(jīng)解耦了。你只要在store與UI和store的連接部分修改即可。還有就是mobx讓你不再使用setState,那你也可以規(guī)避setState的異步更新的問題。mobx會檢測被觀察的數(shù)據(jù),只要數(shù)據(jù)發(fā)生改變,它就會去重新渲染UI。當(dāng)然還有很多很好的地方,每個人理解不一樣罷了。這里就不深究mobx。畢竟我也只是處于一個能用的階段。
最后最后這里展示下demo
當(dāng)然還有, 歡迎大家star和fork, 傳送門
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89063.html
摘要:它是由一個非常聰明的人開發(fā)的,用來緩解在單頁面應(yīng)用中管理狀態(tài)的問題。的問題沒有一種適合所有場景的完美工具。為設(shè)計的是世界的另一個新增內(nèi)容,但目前僅適用于。這將導(dǎo)致最后期限延長,并且留下更多需要我們維護(hù)的代碼。 原文:The Problems with Redux: Can React, MobX, and Realm save us? 作者:Erich Reich 首先,我不討厭 ...
摘要:我現(xiàn)在寫的這些是為了解決和這兩個狀態(tài)管理庫之間的困惑。這甚至是危險的,因?yàn)檫@部分人將無法體驗(yàn)和這些庫所要解決的問題。這肯定是要第一時間解決的問題。函數(shù)式編程是不斷上升的范式,但對于大部分開發(fā)者來說是新奇的。規(guī)模持續(xù)增長的應(yīng) 原文地址:Redux or MobX: An attempt to dissolve the Confusion 原文作者:rwieruch 我在去年大量的使用...
摘要:所以雖然是是用在小程序上,不過我想對于的狀態(tài)管理,也有這么一丟丟啟發(fā)。在目錄下放入和這兩個庫,同時在目錄下新建用于存放全局狀態(tài)。建立由于小程序中不支持裝飾器,所以采用了的寫法。另外,小程序中不支持路徑的省略。 what 名字很長很繞靠口,總的來說,本文是對開發(fā)小程序過程中使用mobx的一個總結(jié)。 狀態(tài)管理,相比大家也很熟悉,顧名思義,是對前端頁面繁復(fù)的狀態(tài)進(jìn)行管理,在此,我也不過多贅...
摘要:發(fā)布發(fā)布節(jié)奏變化從月份的開始,將每周發(fā)布一個新的穩(wěn)定版本。將于年月日開始測試,穩(wěn)定版將于年月日發(fā)布。一個使用和實(shí)現(xiàn)了個用戶界面的頁面。實(shí)踐總結(jié)是一個現(xiàn)代的企業(yè)級框架,提供了強(qiáng)大的和許多開箱即用的功能。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x...
摘要:在該版本發(fā)布之后,開發(fā)團(tuán)隊并不會繼續(xù)發(fā)布新的特性,而會著眼于進(jìn)行重大的錯誤修復(fù)。發(fā)布每六個星期,團(tuán)隊就會創(chuàng)建新的分支作為發(fā)布通道,本文即是對新近發(fā)布的版本進(jìn)行簡要介紹。 showImg(https://segmentfault.com/img/remote/1460000013229009); 前端每周清單專注前端領(lǐng)域內(nèi)容,以對外文資料的搜集為主,幫助開發(fā)者了解一周前端熱點(diǎn);分為新聞熱...
閱讀 594·2021-11-22 14:45
閱讀 3086·2021-10-15 09:41
閱讀 1585·2021-10-11 10:58
閱讀 2807·2021-09-04 16:45
閱讀 2621·2021-09-03 10:45
閱讀 3252·2019-08-30 15:53
閱讀 1234·2019-08-29 12:28
閱讀 2146·2019-08-29 12:14