I have defined a method to load data from AsyncStorage
const loadFromAsyncStorage = async () => {
try {
const serializedState = await AsyncStorage.getItem('state');
if (serializedState === null) return undefined;
return JSON.parse(serializedState);
} catch (error) {
// Error retrieving data
console.log(error.message);
return undefined;
}
};
Now I would like to persist the state returned into my redux as below
export default class App extends Component {
render() {
const persistedState = loadFromAsyncStorage();
persistedState.then(x => {
// ??
});
const store = createStore(
reducers,
persistedState,
applyMiddleware(ReduxThunk)
);
store.subscribe(() => saveToAsyncStorage(store.getState()));
return (
<Provider store={store}>
<MainNavigator />
</Provider>
);
}
}
As above, persistedState
will be a Promise
returned by loadFromAsyncStorage()
and the value can only be accessed if I chain .then()
or adding a keyword await
in front of loadFromAsyncStorage()
method. I'm not sure how to achieve it in a render method as I can't make the render
method async