【发布时间】:2019-01-19 21:59:38
【问题描述】:
所以我对 ReactJS 中 setState 的异步性质有些困惑。 根据 React 文档,您不应该在 setState() 中使用 this.state。但是,如果我有一个计数器作为状态并且我想像这样在点击时更新它:
class App extends React.Component {
state = { counter: 0 }
onClick = () => {
this.setState({counter: this.state.counter + 1})
}
render() {
return (
<div>
<div>{this.state.counter}</div>
<p onClick={this.onClick}>Click me</p>
</div>
)
}
}
这按预期工作。那么为什么这段代码是错误的呢?
更新:我知道 setState 是异步的,它接受具有先前状态作为参数的回调,但我不知道为什么我应该在这里使用它?我想引用setState里面的旧状态,那么为什么要在这种情况下使用回调函数呢?每当this.setState()被执行时,它里面的this.state总是引用旧的状态,它的值只有在setState执行完成后才会被改变为新的状态,而不是在它正在执行的时候。
【问题讨论】:
标签: javascript reactjs