Я пытаюсь загрузить приложение initialState, выполнив функцию load()
в afterCreate()
моего UserModel
. Я пытаюсь загрузить страницу Authenticated
вместо страницы Login
, если обнаружу, что accessToken
не пуст в UserStore
.
Однако страница отображается до запуска функции загрузки afterCreate()
. Это всегда приводит меня к странице входа.
Я следил в основном за этим видеоуроком от egghead.io, но я не уверен, почему он не работает в моем случае.
Я действительно застрял, и любые предложения приветствуются!
То, как я прохожу свой магазин, проходит в магазине, используя Provider
в моем App.js
.
UserModel.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;
}
App.js
let store = UserStore.create({...})
export default class App extends Component {
render() {
return (
<Provider store={store}>
<Router />
</Provider>
);
}
}