1

我正在尝试通过load()afterCreate()我的UserModel. 如果我Authenticated检测到.LoginaccessTokenUserStore

但是页面在afterCreate()加载函数运行之前呈现。最终总是将我带到登录页面。

我主要关注的是 egghead.io 的这个视频教程,但我不确定为什么它在我的情况下不起作用。

我真的被困住了,任何建议都值得赞赏!

我经过商店的方式是在商店中使用Provider我的App.js.

用户模型.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只是一个包装器,AsyncStorage用于帮助将数据解析为 json 格式。

LocalDB.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;
    }

应用程序.js

let store = UserStore.create({...})
export default class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <Router />
      </Provider>
    );
  }
}
4

1 回答 1

0

好像我发现了这个问题。我在开始时使用一些默认变量初始化我的商店,如下所示:

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

一旦我将其更新为null它工作正常。

let store = UserStore.create({accessToken: null})
于 2018-11-10T01:06:40.543 回答