由于 React 的setState
函数是异步的,因此您无法在同一个函数调用中访问新更新的状态this.setState
,在 setState 上使用 async/await 的优缺点是什么,例如await this.setState({ newState });
如果可以使用 async/await 使 React 的 setState 同步会怎样
IT技术
reactjs
2021-03-25 14:42:24
2个回答
没有优点,因为this.setState
不返回Promise并且await
ing 它没有很好的用途。
它应该被promisified以便与await
:
const setStateAsync = updater => new Promise(resolve => this.setState(updater, resolve))
由于setState
通常如何使用,通常不会有太多使用。如果需要依赖先前设置的状态,可以使用更新程序功能。
await
关键字需要用于返回 Promise 的表达式,尽管setState
它是异步的,但它不返回 Promise,因此 await 无法使用它。setState
提供一个callback
跟踪是否已完成。
你会使用回调
this.setState({
newState
}, () => {
console.log(this.state.newState)
})
Here is a demo
这表明 setState 不适用于 async await