【发布时间】:2022-11-10 08:57:20
【问题描述】:
我正在尝试在映射函数中使用 concat 。在这段代码中,您会看到我的函数,它首先检查芯片数组中是否有任何芯片。如果没有,则创建一个芯片。这部分工作正常。如果有筹码并且筹码的 ID 与我的目标的 ID 匹配,我只更改显示的文本而不创建另一个筹码。这也很好,但我希望,如果不是这种情况,我将能够连接另一个芯片,但这不起作用。我也没有出错,当我记录最后一部分时,它显示芯片被添加到阵列中。
我在这里错过了一些非常简单的东西吗?我想提供更多代码,但我的项目有很多导入和东西,这会使这篇文章很长。谢谢你的帮助 :)
const onAddBtnClick = (e) => {
setChipsActive(true);
setChips(
chips.length === 0
? chips.concat({
key: chips.length,
label: e.target.value.toUpperCase(),
id: e.target.name,
})
: chips.map((obj) => {
if (obj.id === e.target.name) {
return { ...obj, label: e.target.value.toUpperCase() };
} else {
chips.concat({
key: chips.length,
label: e.target.value.toUpperCase(),
id: e.target.name,
});
}
return obj;
}),
);
};
【问题讨论】:
-
concat返回一个新数组,它不会改变原来的。所以你的 concat 结果被忽略了
标签: javascript reactjs arrays