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

今天,我使用了setState设置state没有更新,整理了一下:

1、setState函数是异步函数,setState()方法通过一个队列机制实现state更新,当执行setState()的时候,会将需要更新的state合并之后放入状态队列,而不会立即更新this.state(可以和浏览器的事件队列类比)。如果我们不使用setState而是使用this.state.key来修改,将不会触发组件的re-render。如果将this.state赋值给一个新的对象引用,那么其他不在对象上的state将不会被放入状态队列中,当下次调用setState()并对状态队列进行合并时,直接造成了state丢失。

2、解决办法:

(1)this.setState(obj,ckb);


(2)直接使用this.state.obj

但是一般清空下不要使用this.state来改变state里面的值,因为这样会覆盖掉state初始化的值,并且不会重新渲染组件,如果需要重新渲染组件,可以这样加上这个:



你可能感兴趣的:(javascript)