react和reudx ,我应该在哪初始化组件的数据?

我有个组件是通过state更新ui的,但是它的数据需要异步请求获取,我在哪去发送这个请求比较好?

  1. reducer创建的时候?
    异步请求貌似不行吧
  2. redux的容器层?(connect)
    如果放在这我如何在或获取数据后更新state?
  3. 组件的生命周期?
  • componentWillMount
    不行,它只执行一次,下次想更新没法
  • componentWillUpdate
    我当前做法是放在这,但是容易造成死循环
阅读 2.1k
3 个回答
componentWillReceiveProps(nextProps) {
  if (nextProps.someReducer !== this.props.someReducer) {
    this.setState({
      a: reducer.a,
    }, () => {
       dispatch(someAction());
    });
  }
}

如果初始化时也需要的话,那么需要提供一个而外的函数,并且在componentDidMount和componentWillReceiveProps同时处理

someLogicMethod(props) {
  // todo
}

componentWillReceiveProps(nextProps) {
  if (nextProps.someReducer !== this.props.someReducer) {
    this.someLogicMethod(nextProps);
  }
}

componentDidMount() {
  this.someLogicMethod(this.props);
}

在componentDidMount里异步请求获取,然后把数据存到redux里,state应该是绑的redux的值,然后redux更新的时候,state也会实时更新的。

“不行,它只执行一次,下次想更新没法”,你是怎么更新的?用户操作点击更新?还是自动每几秒更新?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题