State 状态
2024年9月18日...小于 1 分钟
State
- 调用
setState
是同步的,但状态更新是异步的。 setState
的第一个参数可以是对象或函数,第二个参数是回调函数。
第二个参数的作用
因为 setState
是一个异步的过程,所以执行完 setState
之后不能立刻更改 state
里的值,如果需要对 state
中数据更改监听,setState
提供了第二个参数, 当数据更改完成,调用回调函数,可以实时获取到更新之后的数据。
为什么?
- 设计为异步,可以显著的提升性能。如果每次调用
setState
都进行一次更新,那么render
函数会被频繁调用,界面会频繁的重绘,性能会受到影响。 - 如果同步更新了
state
,但是没有执行render
函数,由于props
依赖与state
中的数据,那么state
和props
不能保持数据同步,会产生一些问题。
使用示例
this.setState({
someValue: newValue
}, () => {
// do something...
});