要知道setState本质是通过一个队列机制实现state更新的。 执行setState时,会将需要更新的state合并后放入状态队列,而不会立刻更新state,队列机制可以批量更新state。
如果不通过setState而直接修改this.state,那么这个state不会放入状态队列中,下次调用setState时对状态队列进行合并时,会忽略之前直接被修改的state,这样我们就无法合并了,而且实际也没有把你想要的state更新上去。
所以这里不能依靠更改的state来获取state,因为他们可能在同一个队列里面,你不确定他的值到底是多少。
state是内部的(所以也叫作local state),只有组件自己能改变自己的state,别人想改变自己的state,都不可能!
后面要介绍Redux架构,所有组件自己的state越来越少用了,而是变为了Redux中的state,不要混淆。
react的this.setState()执行过程
最新推荐文章于 2024-08-08 10:13:07 发布