我有一個狀態,
const [weekdays, setWeekdays] = useState([{
day: 'S',
fullName: 'Sunday',
select: false
},
{
day: 'M',
fullName: 'Monday',
select: false
},
{
day: 'T',
fullName: 'Tuesday',
select: false
},
{
day: 'W',
fullName: 'Wednesday',
select: false
},
{
day: 'T',
fullName: 'Thursday',
select: false
},
{
day: 'F',
fullName: 'Friday',
select: false
},
{
day: 'S',
fullName: 'Saturday',
select: false
}])
我有新資料,
const newData=['Monday', 'Wednesday', 'Thursday']
我想更新該 weekDays 狀態以選擇:對于 newData 中存在的那些日子,其他日子保持不變。
我正在嘗試找出將 fullName 作為 newData 的索引,然后針對該特定索引我可以更改單個屬性,但不知道該怎么做。
useEffect(() => {
{
if (data?.length > 0) {
setWeekdays(weekdays=>([...weekdays,data]))
}
}
}, [data]);
如果有人知道答案然后建議我,如何實作這個?
提前致謝...
uj5u.com熱心網友回復:
您可以通過映射weekdays并檢查weekdayfullName 是否在資料陣列中來做到這一點。如果在陣列中,則更新selecttotrue并回傳新物件。否則只需回傳weekday.
useEffect(() => {
{
if (data?.length > 0) {
setWeekdays((prevWeekdays) => {
const newWeekdays = prevWeekdays.map((weekday) => {
if (data.includes(weekday.fullName)) {
return {
...weekday,
select: true,
};
}
return weekday;
});
return newWeekdays;
});
}
}
}, [data]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/522597.html
標籤:反应反应钩子反应状态
