nextState可以为一个对象,包含0个或多个要更新的key。最简单的用法为:

this.setState({
  key1: value1, 
  key2: value2});

这种方式能应付大部分的应用场景,但是看看下面这种情况:

this.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_setState
setState_setState_02

setState_setState_03