0

如何在应用程序的第一页加载时将数据从 AsyncStorage 加载到 redux 存储?

我试图在componentWillMount.

componentWillMount(){
    debugger;
    this.check();
}

在检查中,我尝试从中获取值AsyncStorage并将其存储到 redux 存储对象。

async check(){
  await AsyncStorage.getItem('location').then((location) => {
        this.props.location[0].city = location;
      }
  });
  this.props.selectLocation(this.props.location);
}

由于它是一个异步函数,我无法获取值并将其存储selectLocation在 redux 的视图操作中。

如何在组件安装之前正确获取数据并存储它?

更新:

在我的 index.android.js 中,我像这样更改了我的商店,

import { persistStore, autoRehydrate } from 'redux-persist'
import combineReducers from './src/Redux/reducers/combineReducers';
// const store = createStore(combineReducers);
const store = compose(autoRehydrate())(createStore)(combineReducers)
persistStore(store, {storage: AsyncStorage}, () => {
  console.log('restored');
  console.log(store);
})


export default class ReactNavigation extends Component {
  render() {
    return (
      <Provider store = {store}>
        <App />
      </Provider>
    );
  }
}
4

1 回答 1

0

您的组件应该通过事件监听器来监听 store 的变化,并且应该在数据加载到 store 时显示数据。

暂时当数据不存在时,您应该显示类似微调器的东西,让用户知道它正在加载。

理想情况下,您不想让 componentWillMount 等待数据加载。

于 2017-07-29T13:32:26.003 回答