#React 为什么我们需要将一个函数传递给setState()?
其背后的原因setState()是异步操作。由于性能原因,React批处理状态更改,因此状态在setState()调用后可能不会立即更改。这意味着您在调用时不应依赖当前状态,setState() 因为您不确定该状态是什么。解决方案是将一个函数传递给setState(),以先前的状态作为参数。通过这样做,您可以避免由于的异步特性而导致用户在访问时获得旧状态值的问题setState()。
假设初始计数值为零。经过三次连续的递增运算后,该值将仅递增一。
// assuming this.state.count === 0
this.setState({ count: this.state.count + 1 })
this.setState({ count: this.state.count + 1 })
this.setState({ count: this.state.count + 1 })
// this.state.count === 1, not 3
如果我们将函数传递给setState(),则计数将正确递增。
this.setState((prevState, props) => ({
count: prevState.count + props.increment
}))
// this.state.count ===
3 as expected
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。