react中this.setState到底能不能進行運算?我按照react 小書的教程寫但是發(fā)現(xiàn)結(jié)果不對。。。我這里的count每次點擊都會+2,相當于是最后一個this.setState把前面的都覆蓋了。?
2 回答

心有法竹
TA貢獻1866條經(jīng)驗 獲得超5個贊
this.setState 是異步的, 需要在回調(diào)函數(shù)里面去取值
ES6
this.setState({ count: 0}, () => { console.log(this.state.count); })
ES5
this.setState({ count: 0}, function(){ console.log(this.state.count); })

嚕嚕噠
TA貢獻1784條經(jīng)驗 獲得超7個贊
setState
是異步的,也就是說:并不是setState
被調(diào)用后state
就會立即改變,它只是保證在之后的某刻會被改變。因此,你的第2,3個setState
中的this.state.count
依舊是undefined
。
另外,為了優(yōu)化性能,在一定時間內(nèi)像這種傳對象字面量方式調(diào)用setState
是會被批量處理的,前兩個setState
會被合并到第三個調(diào)用中,也就是說只有第三個會起作用。
為了達到你原來代碼的意圖,你應(yīng)該使用updater
函數(shù)
this.setState((prevState) => ({ ...prevState, count: 0 }));
this.setState((prevState) => ({ ...prevState, count: prevState.count + 1 }));
this.setState((prevState) => ({ ...prevState, count: prevState.count + 1 }));
添加回答
舉報
0/150
提交
取消