异步函数后强制React组件更新?

时间:2017-03-26 14:11:07

标签: javascript reactjs asynchronous redux react-redux

我的反应组件中有以下代码:

requests

所以,每当有人按下“提交”字样时,按钮,执行某个功能,然后我的输入字段的状态使用在' myReducer'中更改的相应值进行更新。

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

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

1 个答案:

答案 0 :(得分:2)

这与doSomething()的性质有关。应始终通知您该功能已完成。在99%的情况下,这是一个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
          });