React:如何在setState

时间:2016-07-07 12:43:47

标签: javascript html css design-patterns reactjs

如何在调用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之前确保状态实际更新?

1 个答案:

答案 0 :(得分:6)

setState()是异步的,因此您可以在回调中执行此操作:

handleSomeEvent(data) {
  this.setState({
    data: data
  }, () => this.props.consumeData(this.state.data)); // using `data` would work as well...
}