用纯React链接异步函数?

时间:2017-05-27 14:33:14

标签: reactjs asynchronous method-chaining

我想知道是否有办法仅使用React链接异步函数。我知道如何使用Redux,但想知道是否有一个只使用React的方法。

基本上,我想调用函数computerMove(),但仅在this.state.myMove设置为false之后。像这样:

this.setState({ myTurn: false }).then(() => {
            this.computerMove();
          });

(上面的代码不起作用,但那是我试图做的事情。)

有什么建议吗?

2 个答案:

答案 0 :(得分:3)

setState是异步的,可以触发回调:

this.setState({ myTurn: false }, this.computerMove);

答案 1 :(得分:2)

看一下:https://facebook.github.io/react/docs/react-component.html#componentdidupdate,这就是你想要的。它传递道具&在最后一次渲染之前的状态。检查myTurn值是否已更改。

componentDidUpdate(prevProps, prevState) {
  if (!this.state.myTurn && this.state.myTurn != prevState.myTurn) {
    this.computerMove();
  }
}