如何在调用setState后强制状态更新在React中发生?
据我所知,下次调用render时状态会有效更新。此外,forceUpdate()
应该重新呈现组件并立即更新状态更改,对吧?然而,情况似乎并非如此。这是一个例子。
handleSomeEvent(data) {
this.setState({
data: data
})
this.forceUpdate()
// At this point state should be updated but it isn't
this.props.consumeData(this.state.data) // consumeData will receive old data
}
如何在调用consumeData之前确保状态实际更新?
答案 0 :(得分:6)
setState()
是异步的,因此您可以在回调中执行此操作:
handleSomeEvent(data) {
this.setState({
data: data
}, () => this.props.consumeData(this.state.data)); // using `data` would work as well...
}