changeDate = () => { const { count } = this.state this.setState({ count: count+1 }) console.log(this.state.count) } render () { const { count } = this.state return ( <> setState是同步还是异步 <button onClick={this.changeDate}>更新count: {count}</button> </> ) }
解决办法1:
changeDate = () => { const { count } = this.state this.setState({ count: count+1 }, () => { console.log(this.state.count) }) } render () { const { count } = this.state return ( <> setState是同步还是异步 <button onClick={this.changeDate}>更新count: {count}</button> </> ) }
解决办法2:
async changeDate(){ await this.setStateAsync ({count: this.state.count+1}) console.log(this.state.count) } setStateAsync (state) { return new Promise((resolve) => { this.setState(state,resolve) }) } render () { const { count } = this.state return ( <> setState是同步还是异步 <button onClick={this.changeDate.bind(this)}>更新count: {count}</button> </> ) }
原文:https://www.cnblogs.com/pcxhahaha/p/13034843.html