React + Mobx構建React-Cnode

Juliiii發表於2017-10-16

背景

前一陣子,我剛寫了篇React全家桶實戰,介紹了下我用react全家桶構建一個react webapp的中遇到的一些問題。後來,我發現了mobx。然後靜下心去看一看它的文件。發現很有趣,所以我把這個專案用mobx重構了一次。舊的版本是用react全家桶,就是react+redux構建的, 在github的old-verson的分支上。大家有興趣也可以看看。

原始碼地址

傳送門
如果可以,希望大家star一下,給我點鼓勵。感謝~

開發體會

  • 首先redux很強大,單項資料流的思想,可以讓我們很好地去將資料和UI解耦。我們要修改UI,只能通過發起一個action給reducer,然後reducer經過一系列操作,得出一些新的state,然後這個state便會讓UI更新。但是有個比較蛋疼的地方就是,我們要寫得太多了,我們最起碼要寫一個actionType, 一個actionCreator, 一個reducer,當然還得建立一個store。如果有非同步操作,那還得寫更多一點,這會讓我開發起來的時候比較枯燥。不知道你們有沒有,反正,我是有時候想到要寫那麼多東西,我就有點動力不足了。
  • 其次就是效能優化的問題。就react中每個元件都有一個shouldComponentUpdate的函式,不過它預設總是返回true的。就是無論如何,只要state和props發生了變化,就要發生一次render。但是有時候是不需要更新的。雖然可以引入immutable-js來建立js不可變的資料,加上在shouldComponentUpdate搞點判斷。但是,額,好吧,我覺得引入也挺麻煩的,感覺有點難以在現有的專案裡插入(大神別噴我~)。
  • 最後呢,mobx可以比較好解決我上面的兩個問題。mobx的寫法不難,看一個下午,就可以開始動手寫程式碼了。而且對在原來程式碼上修改可以比較迅速。因為UI和資料已經解耦了。你只要在store與UI和store的連線部分修改即可。還有就是mobx讓你不再使用setState,那你也可以規避setState的非同步更新的問題。mobx會檢測被觀察的資料,只要資料發生改變,它就會去重新渲染UI。當然還有很多很好的地方,每個人理解不一樣罷了。這裡就不深究mobx。畢竟我也只是處於一個能用的階段。

最後

最後這裡展示下demo

demo
demo

當然還有, 歡迎大家star和fork, 傳送門

相關文章