Skip to content

Latest commit

 

History

History
20 lines (16 loc) · 623 Bytes

re-16.md

File metadata and controls

20 lines (16 loc) · 623 Bytes

setState更新state何时同步何时异步?

React控制的事件处理程序,以及生命周期函数调用setState不会同步更新state 。

React控制之外的事件中调用setState是同步更新的。比如原生js绑定addEventListener的事件,setTimeout/setInterval等。

componentDidMount() {
  // js原生绑定
  document.getElementById('btn').addEventListener('clcik', () => {
    this.setState({ count: this.state.count + 1})
    console.log(this.state.count)
  })
}

setTimeout(() => {
  this.setState({ count: this.state.count + 1})
  console.log(this.state.count)
}, 10)