1. 對於store的理解:
http://cn.mobx.js.org/best/store.html
在複雜項目中,可以考慮引入rootstore和provider對所有的store進行統一管理;
UI store可以用於做一些全局相關的處理,比如loading、屏幕尺寸變化、主題設置這些工作。
2. 基於編碼的靈活性考慮,可以不加入 use strict,修改屬性更方便。
3. class內部狀態完全可以用this.xxx來取代,在前面加上@observerable, 非常方便,class本身用@observer裝飾。也就是說此class是個觀察者,它也觀察着本類內部的屬性,比如這裏的watchOn:
這讓你脫離了一些束縛,編寫最純粹的代碼(注意生命週期!)
4. questions TODO:
componentWillReact??? In RN, if it works?
action.bound 什麼東西?
atom 什麼場景使用?
5. reaction的用法:
http://cn.mobx.js.org/refguide/reaction.html
this.saveHandler = reaction(
// 觀察在 JSON 中使用了的任何東西:
() => this.asJson,
// 如何 autoSave 爲 true, 把 json 發送到服務端
(json) => {
if (this.autoSave) {
this.store.transportLayer.saveTodo(json);
}
}
);
當且僅當this.asJson返回一個新值時,第二個方法纔會運行;this.asJson返回的值就是第二個方法的參數json.
它的用法需要在實踐中體會。
6. autorun的使用和其與reaction的對比
constructor() {
mobx.autorun(() => console.log(this.report));
}
autorun我理解就類似於一個觸發器,其中使用到的所有observable對象一旦有變化,就會觸發它的運行。reaction和它有點相似之處,但基於的是一個表達式值的變化,然後基於這個值觸發了一個動作,需要注意的是後一個動作不會被它使用到的其他可觀察對象觸發,這是和autorun不同的地方。