我试图通过在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;
}
答案 0 :(得分:0)
好像我找到了问题。我一开始就用一些默认变量初始化了商店:
let store = UserStore.create({accessToken: ""})
一旦将其更新为null
,它就可以正常工作。
let store = UserStore.create({accessToken: null})