Mobx的實現(xiàn)思想和Vue幾乎一樣,所以其優(yōu)點跟Vue也差不多:通過監(jiān)聽數(shù)據(jù)(對象、數(shù)組)的屬性變化,可以通過直接在數(shù)據(jù)上更改就能觸發(fā)UI的渲染,從而做到MVVM益涧、響應式、上手成本低酷鸦、開發(fā)效率高饰躲,在數(shù)據(jù)管理上需要再詳細闡述下其區(qū)別。
Redux是建議全局唯一Store的臼隔,多個Reducers也會在傳遞給react-redux之前被合并成一個root reducer嘹裂,任何數(shù)據(jù)的更改(通過Reducer)都會通過這一個store來觸發(fā)整個UI樹的重新渲染,如果不做任何的性能優(yōu)化(pureRender等)摔握,就算VD(Virtual Dom)有了再高的效率提升寄狼,當頁面數(shù)據(jù)量、DOM數(shù)量大了氨淌,性能消耗也是非常大的泊愧。另外一點,Redux實現(xiàn)的對數(shù)據(jù)的管理是pull方式的盛正,就是說其只能等待應用派發(fā)某個行為(Action)删咱,然后重新觸發(fā)UI的渲染,而做不到對行為的可預期豪筝;Mobx則不一樣痰滋,他是基于監(jiān)聽數(shù)據(jù)的屬性變化來實現(xiàn)的摘能,而且是多store的,對于任何的數(shù)據(jù)變更都是第一時間知道的敲街,所以其實現(xiàn)方式是基于push的監(jiān)聽訂閱模式而實現(xiàn)团搞,這樣,他就可以做到對數(shù)據(jù)的可預測以及細粒度的控制多艇,甚至可以通過修改React組件生命周期的方式來減少性能的消耗逻恐,而無需使用者對這些細節(jié)關心。當然這一切肯定是有了mobx對組件做observe操作才能實現(xiàn)的峻黍,所以也就有了observer用的越多复隆,應用性能越高的說法。