#javascript #reactjs #reactstrap
Вопрос:
Я использую reactstrap для создания формы, но у меня проблема с переключателем, потому что я не понимаю, как сохранить значение.
Переменной формы является:
const [formModel, setFormModel] = useState({
name: '',
deletedDate: '',
});
Моя форма такова:
<AvForm model={formModel} onSubmit={filterResults} onReset={handleFormReset}>
<h3 className="text-center">Form</h3>
<Row>
<Col md="6">
<AvGroup>
<Label id="name" for="name">
Name
</Label>
<AvField
id="name"
data-cy="name"
type="text"
name="name"
onChange={handleChange}
value={formModel.name}
/>
</AvGroup>
<FormGroup check>
<Label check>
<Input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="true"
onChange={handleChange}
/>{' '}
Yes
</Label>
</FormGroup>
<FormGroup check>
<Label check>
<Input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="false"
onChange={handleChange}
/>{' '}
No
</Label>
</FormGroup>
</AvGroup>
Мой результат фильтрации таков:
const filterResults = (event, errors, values) => {
console.log('values ', values);
let entity = null;
if (errors.length === 0) {
entity = {
...values,
};
}
//other code...
const handleChange = e => {
console.log('e ', e);
const { name, value } = e.target;
console.log('name ', name, ' value ', value);
setFormModel(prevState => ({
...prevState,
[name]: value,
}));
};
Теперь, когда я отправляю форму, если я проверил радиобуттон DeletedDate в функции filterResult, у меня нет никакого значения об этом (но у меня есть значение для имени)
Как я могу правильно использовать переключатель, чтобы сохранить значение?
Огромное спасибо
Ответ №1:
Основная проблема заключается в том, что вам не хватает checked
атрибута:
<label>
<input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="true"
checked={formModel.deletedDate === "true"}
onChange={handleChange}
/>{" "}
Yes
</label>
<label>
<input
id="deletedDate"
data-cy="deletedDate"
type="radio"
name="deletedDate"
value="false"
checked={formModel.deletedDate === "false"}
onChange={handleChange}
/>{" "}
No
</label>
Посмотрите, как он работает в песочнице
Изменить: Я добавил обработчик отправки в песочницу.
Комментарии:
1. Спасибо, вы правы! Но у меня есть проблема, почему я не могу увидеть значение моей переменной в filterResult? В журнале консоли я вижу только значения других переменных
2. Я не знаю, что это за компонент
AvForm
, поэтому я не могу вам сильно помочь в этом. Тем не менее, я добавил некоторую обработку отправки в песочницу. Посмотри.