React组件使用setState设置state没有更新

今天,我使用了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

相关文章
相关标签/搜索