[英]Is this.setState() of react.js synchronous or asynchronous?
请查看以下代码。 我试过在另一个下面调用setState
。 看起来从第二次setState
调用返回的count
始终设置为this.state.count
。 在这里,总是分配3
class Counter extends React.Component {
constructor(props){
super(props);
this.handleReset = this.handleReset.bind(this);
this.state = {
count : 0
};
}
handleReset() {
this.setState(() => {
return {
count: 1
}
});
this.setState(() => {
return {
count: 3
}
});
}
render() {
return (
<div>
<h1>Count:{this.state.count}</h1>
<button onClick={this.handleReset}>reset</button>
</div>
);
}
}
ReactDOM.render(<Counter />, document.getElementById('app'));
根据React文档,它可以是异步的。
React可以将多个setState()调用批处理到单个更新中以提高性能。 由于this.props和this.state可能会异步更新,因此您不应依赖于它们的值来计算下一个状态
setState
是异步的。 您可以将callback作为第二个参数传递,并查看更新后的状态。
this.setState({ count: 5 }, () => {
console.log(this.state.count) // 5
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.