1 .是异步操作函数。
2 .组件在没有渲染的时候,this.setState还没有被调用。
3 .批量执行state转变时让DOM渲染更快(相对比一个一个的setState的来的快)
4 .setState函数并不会阻塞等待状态更新完毕。而是直接会渲染页面,如果我们想咬state状态更新完毕之后才进行某些操作。此时可以在componentWillUpdate生命周期或者componentDidUpdate生命周期的回调函数去执行我们的操作。第二种是在确保setState的同步更新,setState使用回调函数。
5 .setState方法用于更新当前组件的state状态,但是调用这个方法之后,state并不会立即更新,而是在render方法调用后才会更新,react的思想是对state进行批量转换有利于dom渲染更快。换句话来说setState方法是异步操作的。
setState()对象方法
1 .异步操作。
2 .
函数方法
1 .在更新下一个state的时候,我们可以正确的获取前面的state,并在其基础上进行相应的修改。而不是简单的进行对象合并。
2 .当我们传入函数来更新state的时候,react会把我们更新的state的函数加入到一个队列里面然后按照函数的顺序依次调用。同时,为每个函数传入state的前一个状态,这样就能更加合理的来更新我们的state了。
3 .当调用setState函数的时候,react首先将你传递给setState()函数的对象合并到当前状态中。然后他将开始协调各部分。创建一个react元素树,对比新旧树的差别,并根据你传递给的setState()函数对象的不同,计算出相应的变化部分,最终完成dom更新。但是因为包含大量的工作,调用setState并不会立即更新你的state,出于性能的考虑,react可能将多个setState()调用合并成一个批量处理更新操作。
4 .setState方法通过一个队列机制实现state更新,当执行setState的时候,会将需要更新的state合并之后放入队列状态,而不胡立即更新this.state(此处类比浏览器的时间队列)。如果我们不是使用this.setState而是使用this.state.key=value来修改,是不会触发组件的re-render