Mobx-状态树afterCreate()在本机中不同步

时间:2018-11-09 17:24:53

标签: reactjs react-native mobx mobx-react mobx-state-tree

我试图通过在load()的{​​{1}}中执行afterCreate()函数来加载应用程序initialState。如果我检测到UserModel中的Authenticated不为空,我想做的是加载一个Login页面而不是一个accessToken页面。

但是,在运行UserStore加载功能之前,页面已呈现。最终总是导致我进入登录页面。

video tutorial之后,我主要跟随egghead.io,但是我不确定为什么我的情况不起作用。

我真的很困惑,任何建议都值得赞赏!

我通过商店的方式是在afterCreate()中使用Provider进入商店。

UserModel.js

App.js

对象const User = types .model("User", { accessToken: types.string }) .actions(self => ({ afterCreate() { self.load(); }, load: flow(function*() { const localData = yield LocalDB.get("user"); applySnapshot(self, localData); }) })); 只是LocalDB的包装,以帮助将数据解析为json格式。

LocalDB.js

AsyncStorage

App.js

const LocalDB = {    
  get: async function(key) {
    try {
      let value = await AsyncStorage.getItem(key);

      try {
        return JSON.parse(value);
      } catch (err) {
        return value;
      }
    } catch (err) {
      console.error(err);
      return false;
    }

1 个答案:

答案 0 :(得分:0)

好像我找到了问题。我一开始就用一些默认变量初始化了商店:

let store = UserStore.create({accessToken: ""})

一旦将其更新为null,它就可以正常工作。

let store = UserStore.create({accessToken: null})