Я пытаюсь обработать событие на основе атрибута "checked" переключателя в React.js. Я хочу, чтобы кнопки позволяли выбирать более одного значения, поэтому я удалил атрибут «name», который, казалось, запрещал выбор нескольких значений.
Базовый компонент радиокнопки выглядит так:
export function Radio_Button_Multiple_Selection (props) {
return (
<label>
<input type="radio"
checked={props.form_data[props.field_name].indexOf(props.btn_value) > -1}
onClick={props.radio_effect} />
{props.btn_value}
</label>
)
}
У меня есть объект form_data, который имеет массив значений, соответствующих btn_value переключателей, где, если значение найдено в массиве, оно должно появиться как проверенное. (И эта часть сейчас работает нормально, они действительно проверены, как и ожидалось):
const form_data = {
...
occupations: ['student', 'merchant', 'paladin', 'troll'],
...
}
Теперь у меня также есть класс реакции с методом для управления значениями в массиве профессий, который отвечает на то, был ли уже выбран выбранный переключатель, или нет:
handleRadioButton (event) {
const target = event.target;
const value = target.value;
const isChecked = target.checked;
console.log(isChecked) // this undefined. why?!?
if (isChecked) {
// remove it from array
// etc.
} else {
// add it to array
// etc.
}
}
Моя основная проблема заключается в следующем:
Когда я console.log логику "checked", которая возвращает логическое значение внутри атрибута checked компонента RadioButton, оно появляется, как ожидалось (true или false, если оно есть или отсутствует в массиве). Но он всегда появляется как checked = undefined
в методе класса для обработки кнопок.