从 Reactjs 中的复选框数组中删除选中的项目

Remove the checked item from the checkbox array in Reactjs

我创建了一个复选框数组来存储选中的项目数组,当项目被选中时它应该存储在一个数组中,当项目取消选中时从数组中删除。

                       <input
                        className="border border-2 "
                        type="checkbox"
                        value={`${items.VariationID}`}
                        defaultChecked={!!checked[items.VariationID]}
                        onChange={(e) => {
                          handleChange(e);
                        }}
                      />

这就是我创建选中数组的方式

const handleChange = (e) => {
let updatedList = [...checked];
if (checked) {
  updatedList = [...checked, e.target.value];
} else {
  updatedList.splice(checked.indexOf(e.target.value), 1);
}
setChecked(updatedList);

console.log(updatedList);

};

但我得到的结果是,当我选中该项目时,该项目已添加到检查数组中,但当取消选中该复选框时,它并没有将其从数组中删除,而是再次加载。

如何正确操作?

您应该使用 e.target.checked 而不是 checked

const handleChange = (e) => {
let updatedList = [...checked];
// if (checked) { <- this part, checked is the array of checked item right?
if(e.target.checked) {
  updatedList = [...checked, e.target.value];
} else {
  updatedList.splice(checked.indexOf(e.target.value), 1);
}
setChecked(updatedList);

console.log(updatedList);