react中setState解析
在react中调用setState方法之后并不会立马去更新DOM结构,而是先缓存下来
setState使用
有两种方法,一种常规的使用方法
常规方法(对象参数)
1 | this.setState({ |
这种方式能应付大部分的应用场景,但是看看下面这种情况:1
2
3
4
5
6this.setState({
count: this.state.count + 1
});
this.setState({
count: this.state.count + 1
});
最后得到的count却是不可控的。因为setState
不会立即改变this.state
,而是挂起状态转换,调用setState
方法后立即访问this.state
可能得到的是旧的值。
setState方法不会阻塞state更新完毕
第二个setState可能还没等待第一次的state更新完毕就开始执行了,所以最后count可能只加了1。
这时setState的第二个参数就派上用场了,第二个参数是state更新完毕的回调函数
函数方式(函数参数)
1 | this.setState((state, props) => { |
每次更新时都会提取出当前的state,进行运算得到新的state,就保证了数据的同步更新。