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

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

useState 與 React 中的異步操作沖突

useState 與 React 中的異步操作沖突

元芳怎么了 2021-10-29 16:28:14
在帶有useState鉤子的 React 功能組件中,我不知道如何運(yùn)行多個異步操作而不會對最終結(jié)果產(chǎn)生沖突。如果初始狀態(tài)是一個對象并且每個異步操作都對給定的鍵執(zhí)行更改,則可以使用擴(kuò)展運(yùn)算符來設(shè)置新狀態(tài)。例子:const [oldState, setNewState] = React.useState({ /* something */ });const asyncOperation = async () => {   await somethingAsync();   setNewState({      ...oldState,      key: 'newValue',   });};當(dāng)更多這些操作同時(shí)運(yùn)行時(shí),問題就出現(xiàn)了:oldState使用的期間setNewState可能會在另一個異步函數(shù)結(jié)束時(shí)改變,但是當(dāng)最后一個異步操作執(zhí)行他的時(shí)候,狀態(tài)的一些更新可能會丟失,setNewState因?yàn)橐胦ldState可以指向到舊版本的變量。這是一個演示:嘗試單擊一行中的每個按鈕,最后,其中一些(可能)會導(dǎo)致仍在加載。如何在不留下反應(yīng)鉤子的情況下避免這個問題?
查看完整描述

1 回答

?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個贊

對于異步操作,您需要使用更新程序功能利用先前的狀態(tài)。


setNewState((previousState) => ({

  ...previousState,

  key: 'newValue',

}));

在這里,oldState是 != previousState。


查看完整回答
反對 回復(fù) 2021-10-29
  • 1 回答
  • 0 關(guān)注
  • 400 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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