我想知道是否有办法仅使用React链接异步函数。我知道如何使用Redux,但想知道是否有一个只使用React的方法。
基本上,我想调用函数computerMove()
,但仅在this.state.myMove
设置为false
之后。像这样:
this.setState({ myTurn: false }).then(() => {
this.computerMove();
});
(上面的代码不起作用,但那是我试图做的事情。)
有什么建议吗?
答案 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();
}
}