第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

react新手有一個疑惑

react新手有一個疑惑

紫衣仙女 2018-08-21 15:26:53
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);
})


查看完整回答
反對 回復 2018-08-28
?
嚕嚕噠

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 }));


查看完整回答
反對 回復 2018-08-28
  • 2 回答
  • 0 關(guān)注
  • 846 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號