mobx理解和疑問小結

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:

@observable watchOn = false;
內部屬性的初始化也很簡單:
watch = new WatchStore();

這讓你脫離了一些束縛,編寫最純粹的代碼(注意生命週期!)

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不同的地方。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章