Javascript 异步功能后强制反应组件更新?

Javascript 异步功能后强制反应组件更新?,javascript,reactjs,asynchronous,redux,react-redux,Javascript,Reactjs,Asynchronous,Redux,React Redux,我的react组件中有以下代码: onSubmit(e) { e.preventDefault(); this.props.doSomething(); this.setState({ inputField: this.props.myReducer.someValue }); } 因此,每当有人按下“提交”按钮时,就会执行一些函数,然后输入字段的状态就会更新为“myReducer”中更改的相应值 然而,有一个问题doF

我的react组件中有以下代码:

onSubmit(e) {
      e.preventDefault();
      this.props.doSomething();

      this.setState({
          inputField: this.props.myReducer.someValue
      });
  }
因此,每当有人按下“提交”按钮时,就会执行一些函数,然后输入字段的状态就会更新为“myReducer”中更改的相应值

然而,有一个问题doFunction'是一个异步操作,这意味着直接设置状态之后不会导致更新,因为当函数在之后设置状态时,状态还不会发生更改


我如何在react/redux中处理这样的事情?

这与
doSomething()
的性质有关。您应该始终收到函数完成的通知。99%的情况下,something是一个Ajax调用,在大多数库中,它都会返回一个承诺:

 this.props.doSomething()
   .then(() => 
          this.setState({
            inputField: this.props.myReducer.someValue
          });
如果
doSomething()
不返回承诺,您可能应该对其进行编辑或扩充,使其返回承诺。如果需要回调,您可以执行以下操作:

 new Promise(this.props.doSomething)
   .then(() => 
          this.setState({
            inputField: this.props.myReducer.someValue
          });

使
doSomething
接受回调函数作为参数,或使
doSomething
返回一个
Promise
。非常感谢!doSomething()是一个使用redux thunk的函数,但是我不确定现在如何在此基础上构建一个承诺?将分派包装为:
新承诺(分派(createAction(args))
——取决于中间件,分派将返回标量或承诺,这两种方式都可以。