【发布时间】:2019-02-15 13:43:40
【问题描述】:
我已经定义了一个从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;
}
};
现在我想将状态返回到我的 redux 中,如下所示
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>
);
}
}
如上,persistedState 将是由loadFromAsyncStorage() 返回的Promise,并且只有在我链接.then() 或在loadFromAsyncStorage() 方法前面添加关键字await 时才能访问该值。我不确定如何在渲染方法中实现它,因为我无法使 render 方法异步
【问题讨论】:
-
您确定要在
render方法中使用createStore吗?它应该在外面。 -
我认为,您可以在 then 内部调度,并且您的 createStore 必须在 render 之外。
-
@HardikModha:您介意告诉我在我的示例中如何将
createStore移出渲染方法吗?
标签: reactjs react-native redux promise asyncstorage