【发布时间】:2021-10-31 05:00:12
【问题描述】:
我有一个包含多行的表,每行都有一个相应的复选框。目前,当我选中一个复选框时,我有一个使用状态数组,该数组使用行中的名称进行更新。即,如果我有一个包含三行的表,Bob、Jon、Joe,并且每个名称旁边都有一个复选框,则单击该复选框后,该名称将进入数组。
const handleAdd = (fileRow) => {
setSelectedFileRows([...selectedFileRows, fileRow]);
};
const handleRemove = (fileRow) => {
const newFiles = selectedFileRows.filter((t) => t !== fileRow);
setSelectedFileRows(newFiles);
};
const selectRow = {
mode: "checkbox",
style: { backgroundColor: "#c8e6c9" },
onSelect: (row, isSelect) => {
if (isSelect) {;
handleAdd(row.name);
} else {
handleRemove(row.name);
}
}
这一切都很好,但当我尝试使用 onSelectAll 填充数组时,其中一个复选框被单击并且所有行也同样被选中,数组没有正确填充。
onSelectAll: (isSelect, rows) => {
if (isSelect) {
rows.forEach((row) => {
handleAdd(row.name);
});
} else {
rows.forEach((item) => {
handleRemove(item.name);
});
}
}
我已经看到我不应该在循环中更新使用状态,但我是新手,并没有真正看到一种方法来获取所有名称以填充数组。
【问题讨论】:
-
你不会只是
setSelectedFileRows([...allRows])或者包含所有行的数组的名称是什么?
标签: javascript arrays reactjs checkbox react-bootstrap