## 深入理解 setState({}); - setState可能是异步执行的。如果setState在某个事件中为异步,否则为同步。 - setState(object,CallBack); `setState({ n:this.state.n+1 },()=>{ console.log(this.state); }));` ~~~ this.setState(cus=>{ // 参数cur表示当前的状态 // 该函数的返回结果会混合(覆盖)掉之前的状态 // 该函数是异步执行的。 return {n:cur.n+1} }); ~~~ ### 最佳实践: - 把所有的setState当作是异步的处理、 - 不要信任setState调用之后的状态(非回调) - 要使用改变之后的状态,需要使用回调函数 - 如果新的状态需要根据之前的状态进行运算,使用函数的方式改变状态。setState(function) React会对异步的setState进行优化,将多次的合并为一次,所以render(渲染函数)只调用一次。 > ## :-: [简书:关于this.setState()的那些事](https://www.jianshu.com/p/a883552c67de)