Mobx 筆記
Mobx 三板斧,observable、observer、action。
- observable: 通過 observable(state) 定義組件的狀態,包裝后的狀態是一個可觀察數據(Observable Data)。
- observer: 通過 observer(ReactComponent) 定義組件。
- action: 通過 action 來修改狀態。
邏輯簡圖
1、Mobx 知道什么時候應該渲染頁面,因此基本不需要手動設置 shouldComponentUpdate 來提高應用性能。
2、mobx.observable([1,2])返回一個 observable 類型的參數,可以用isObservable判斷
mobx.isObservable(mobx.observable([1,2,3])) // true
3、(@)computed 計算值:
計算值(computed values)是可以根據現有的狀態或其它計算值的衍生值。
computed 和 autorun對比:
相同:它們都是響應式調用的表達式
不同:如果你想響應式的產生一個可以被其它 observer 使用的值,請使用 @computed,如果你不想產生一個新值,而想要達到一個效果,請使用 autorun
computed性能很佳:計算值在大多數情況下可以被 MobX 優化的,如果computed長期不被觸發,或者使用它的UI卸載,MobX 會自動地將其垃圾回收(autorun 中的值必須要手動清理),可以使用 observe 或 keepAlive 來強制保持計算值總是處於喚醒狀態。
自我理解:
好基友的攜手改變世界,React+mobx的完美結合:
React 提供了優化UI渲染的機制, 這種機制就是通過使用虛擬DOM來減少昂貴的DOM變化的數量。
MobX 提供了優化應用狀態與 React 組件同步的機制,這種機制就是使用響應式虛擬依賴狀態圖表,它只有在真正需要的時候才更新(這就又極大的提高了效率)。
還有特別棒的一點:
React+mobx = 類MVVM , 可以實現像vue一樣的雙向數據綁定,這點相當贊,而且效率感人。