Я искал разные ответы, но все они jQuery связаны или очень сложны для того, что я имею в виду? Я работаю в форме и хочу, чтобы, когда пользователь устанавливает флажок, его значение добавлялось в массив, хранящий информацию в родительском компоненте. Если флажок снят, удалите этот элемент из массива.
Код обрезан для простоты
const Knowledge = (props) => {
const checkHandler = (e) => {
const tools = props.data.usesTools; //Array in parent component
const value = e.target.value; //Checkbox value
tools.includes(value) //If Array contains value
? tools.filter((tool) => tool.value != value) // Then remove item from Array
: tools.push(value) // Else, push item to Array;
};
return (
<div>
<label>
<input
type="checkBox"
name="usesTools"
value="Slack"
onChange={checkHandler}
/>
Slack
</label>
</div>
//Other checkboxes removed for simplicity
)
}
Вопросы:
1) Как добавить / удалить элементы в массиве, если установлен флажок выбрано / не выбрано.
2) Я пытался добавить ловушку, чтобы поставить / снять флажок, но проверяет все флажки, как только вызывается обработчик:
const [ isSelected, setSelected = useState(false);
<input
type="checkBox"
name="usesTools"
value="Slack"
onChange={checkHandler}
checked={isSelected}
/>