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