今天,我使用了setState设置state没有更新,整理了一下:浏览器
一、setState函数是异步函数,setState()
方法经过一个队列机制实现state
更新,当执行setState()
的时候,会将须要更新的state
合并以后放入状态队列,而不会当即更新this.state
(能够和浏览器的事件队列类比)。若是咱们不使用setState
而是使用this.state.key
来修改,将不会触发组件的re-render
。若是将this.state
赋值给一个新的对象引用,那么其余不在对象上的state
将不会被放入状态队列中,当下次调用setState()
并对状态队列进行合并时,直接形成了state
丢失。异步
(1)this.setState(obj,ckb);函数
(2)直接使用this.state.objthis
可是通常清空下不要使用this.state来改变state里面的值,由于这样会覆盖掉state初始化的值,而且不会从新渲染组件,若是须要从新渲染组件,能够这样加上这个:code