面试总被问到??
1、由 React 管制的事件处理程序,以及生命周期函数调用 setState 不会同步更
新 state 。
2、React 管制之外的事件中调用 setState 是同步更新的。比方原生 js 绑定的事
件,setTimeout/setInterval 等。
class Example extends React.Component { constructor() { super() this.state = { val: 0 } } componentDidMount() { this.setState({ val: this.state.val + 1 }) console.log(this.state.val) // 第 1 次 log this.setState({ val: this.state.val + 1 }) console.log(this.state.val) // 第 2 次 log setTimeout(() => { this.setState({ val: this.state.val + 1 }) console.log(this.state.val) // 第 3 次 log this.setState({ val: this.state.val + 1 }) console.log(this.state.val) // 第 4 次 log }, 0) } render() { return null }} // 0, 0, 1, 2