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

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

React / javascript 添加到數(shù)組中不改變數(shù)組長度

React / javascript 添加到數(shù)組中不改變數(shù)組長度

繁星淼淼 2022-08-18 15:33:44
我正在學習 react native,我正在做一個小應用程序,用于記錄每天的睡眠時間。我正在使用useEffect()來觸發(fā)屏幕上顯示的值的一些修改,其中之一是我在其中更新的平均時間useEffect:average()const [updateAction, setUpdateAction] = useState(false);useEffect(() => {        console.log("lenght:" + registSleep.length);        var registed = false;        if (!isNaN(enteredHours)) {            for (var i = 0; i < registSleep.length; i++) {                if (                    registSleep[i].day === selectedDay &&                    registSleep[i].month === selectedMonth &&                    registSleep[i].year === selectedYear                ) {                    registed = true;                    registSleep[i].hours = enteredHours;                }            }            if (!registed) {                var newReg = {                    day: selectedDay,                    month: selectedMonth,                    year: selectedYear,                    hours: enteredHours,                };                setNewRegist((prevReg) => [                    ...prevReg,                    newReg,                ]);             }            if (registSleep.length != 0) {                average();            }               }        console.log("2. lenght:" + registSleep.length);        setviewInfoAction(!viewInfoAction);    }, [updateAction]);為了進行調試,如您所見,在向注冊表數(shù)組添加新值之前,我打印到控制臺長度,據(jù)我所知,它應該打印,然后,而是打印,然后在下一個觸發(fā)器上,然后。setNewRegist(...)lenght: 02. lenght: 1lenght: 02. lenght: 0lenght: 12. lenght: 1為什么數(shù)組在添加時不更新?
查看完整描述

2 回答

?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

我假設是useState Hook,它的價值是registSleepsetNewRegist


const [registSleep, setNewRegist] = useState([ ... ])

它不起作用的兩個原因。useState Hook 是異步的,對于 setState 內部的邏輯,邏輯不會停止。


setNewRegist( ... update registSleep)

console.log(registSleep) // will run before setState finishes

然而,即使它及時完成,registSleep已經設置為固定值,因此它不會更改,除非重新呈現(xiàn)組件(這是setState所做的),以觸發(fā)組件重新呈現(xiàn)。


查看完整回答
反對 回復 2022-08-18
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

//I am considering this

const [ registSleep , setNewRegist ] = useState([])

setNewRegist是異步函數(shù),因此在下一個語句將首先執(zhí)行,因此它不會更新。console.logregistSleep


那么如何檢查正確呢?


Tada.... !!!您可以通過以下方式檢查其每次更新:registSleepuseEffect


useEffect(() => {

   // Here you can get updated length

   // as soon as registSleep updates

   console.log(registSleep.length); 

},[registSleep]) // <-- watch for any update on `registSleep`


查看完整回答
反對 回復 2022-08-18
  • 2 回答
  • 0 關注
  • 180 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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