multiSelection: true | false;
selected: []
и чекбоксы которые имеют состояние checked: true | false.
multiSelection = true и checked = true
, то в массив можно записать несколько значений, если checked =. false
удаляем элемент.multiSelection = false и checked = true
, то в массив должно записываться только одно значение и удаляться тоже. const [selected, toggleSelected] = useState([]);
const setSelected = (option, checked) => {
const selectedValues = [...selected];
if (multiSelection) {
if (checked) {
toggleSelected([...selectedValues, option]);
} else {
const filteredArray = selectedValues.filter(
(item) => item.key !== option.key
);
toggleSelected(filteredArray);
}
} else {
if (checked) {
toggleSelected([option]);
} else {
selectedValues.pop();
toggleSelected(selectedValues);
}
}
};
const [selected, setSelected] = useState([]);
const toggleSelected = (option, checked) => {
if (multiSelection) {
setSelected(selected => checked
? [...selected, option.key]
: selected.filter(entry => entry !== option.key)
);
} else {
setSelected(checked
? [option.key]
: []
);
}
};
toggleSelected
не имело логики переключения, хотя по наименованию - должна была бы. То же самое было с setSelected
. Демка.