所以我试图为一周中的每一天创建一个具有不同属性的数组。
我有这样一个数组:
const [fullData, setFullData] = useState([{index:-1,exercise:""}])
所以当用户在周一点击时,我有一堆练习供他选择。对于每个练习,我想把工作日的索引(我已经在我的代码中有了),比如1和他选择的练习。
它会以这样的形式结束:
[{index:1,exercise:"exercise1"},{index:1,exercise:"exercise2"}]
我真的不知道如何做到这一点,因为我已经在一个数组练习:
const [exerciseValues, setExerciseValues] = useState([]);
而我的工作日只是一个常规变量
let selectedWeekday_Index:number;
我已经尝试了一堆在stackoverflow中列出的例子,但我可以实现它到我的代码,有人能帮助我吗?我的最后一次尝试结束了这段代码-这不起作用。如果有人需要更多的细节来理解,请问我,我会更新它的问题。
const acceptExercises = () => {
let selectedElements = [...exerciseValues]
let savedData = [...fullData]
selectedElements.forEach(element => {
let copyData=savedData.map(item=>({
[item.exercise]:element,
[item.index]:selectedWeekday_Index
}))
setFullData(copyData)
});
}
我还建议您以不同的方式保存数据,如前面提到的@iz_。
但是如果你仍然想这样做,你可以利用这个实现设置你的fullData
:
const acceptExercises = () => {
setFullData((prev) => [
...prev,
...exerciseValues.map((exercise) => ({
index: selectedWeekday_Index,
exercise: exercise,
})),
]);
};
首先我们通过prev
复制之前的值,然后我们通过exerciseValues
映射并获得具有正确周索引的exercises
列表,我们将其展开并添加到fullData
。