我正在嘗試創建一個天陣列,從當天開始,直到我可以修改的某個范圍(例如,60 天),但我沒有成功。
這是我的代碼:
import { useEffect, useState } from 'react';
import { add } from 'date-fns'
export const Datepicker = () => {
const [daysArray, setDaysArray] = useState([ new Date() ]);
const daysRange = 60;
useEffect(() => {
for (let i = 0; i < daysRange; i ) {
setDaysArray([ ...daysArray, add(new Date(), { days: i }) ]);
}
}, []);
console.log(daysArray)
我正在等待這樣的輸出:
0: Mon Nov 07 2022 18:57:14 GMT-0300
1: Tue Nov 08 2022 18:57:14 GMT-0300
2: Wed Nov 09 2022 18:57:14 GMT-0300
3: Thu Nov 10 2022 18:57:14 GMT-0300
Etc... up to the range that I have entered
但我的輸出如下所示:
0: Mon Nov 07 2022 18:57:14 GMT-0300
1: Thu Jan 05 2023 18:57:14 GMT-0300
我究竟做錯了什么?
我想有比使用 for 回圈更好的方法來做到這一點,但我真的不知道在這種情況下最佳實踐是什么。
uj5u.com熱心網友回復:
daysArray在每次迭代中具有相同的值
輕松修復:
for (let i = 0; i < daysRange; i ) {
setDaysArray(daysArray => [ ...daysArray, add(new Date(), { days: i }) ]);
}
更好的修復:
const array = []
for (let i = 0; i < daysRange; i ) {
array.push(add(new Date(), { days: i }));
}
setDaysArray(array)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/528980.html
上一篇:通過選擇下拉選擇const
下一篇:在物件陣列中過濾物件陣列
