繁体   English   中英

在异步功能后是否强制更新React组件?

[英]Force React component update after async function?

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

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

      this.setState({
          inputField: this.props.myReducer.someValue
      });
  }

因此,每当有人按下“提交”按钮时,就会执行某些功能,然后我的输入字段的状态将根据在“ myReducer”中更改的相应值进行更新。

但是,有一个问题。 “ doFunction”是一个异步操作,这意味着事后直接设置状态不会导致任何更新,因为当事后设置状态时,该功能尚未更改状态。

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

它与doSomething()的性质有关。 您应该始终收到该功能已完成的通知。 99%的时间是Ajax调用,在大多数库中,它返回一个Promise:

 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
          });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM