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

相關文章
相關標籤/搜索