1.setState异步更新
- 不要直接修改state
调用setState不会直接修改当前的state,而会将改变放入更新队列,队列机制可以高效地批量更新state,减少渲染次数
直接修改state则不会调用render重新渲染组件,理论上是可以改变state的属性的,但是后面的setState可能会将其覆盖,使用时应该将其作为常量 - setState的状态更新是异步的
不能依赖于当前state和props的值,来计算下一个状态,应为状态更新是异步的,并不知道执行时的状态,应该为setState传入改变的回调函数 - setState不能在shouldComponentUpdate或componentWillUpdate中调用setState,则会造成循环调用,将浏览器的内存占满后崩溃