Поскольку ваше свойство состояния isadult
предназначено для использования во вводе флажка, оно должно быть объявлено и обновлено как логическое.
Вы объявляете свойство следующим образом:
const [isadult, setIsAdult] = React.useState('');
Первоначальное присвоение - это пустая строка (''
), которая может вызвать проблемы с другими частями кода вашего приложения, если они ожидают, что это свойство будет иметь логический тип. Вместо этого вы должны начать его как логическое:
const [isadult, setIsAdult] = React.useState(false);
Теперь основная проблема, с которой вы сталкиваетесь, заключается в том, что данные формы сериализуются, а isadult
является объектом. Эта проблема возникает из-за того, что вы назначаете ему объект через setIsAdult
:
setIsAdult({
...isadult,
[event.target.name]: event.target.value,
});
Средство установки свойства состояния добавляет любое значение, переданное ему, непосредственно в свойство, к которому оно прикреплено. Он работает иначе, чем setState
, который ожидает объект состояния. Правильный способ использовать этот метод в этом случае:
setIsAdult(event.target.value);
Здесь event.target.value
содержит именно флажок checked
логическое значение, которое должно go превращаться в isadult
. Теперь это свойство правильно сериализовано как логическое значение в вашем formData
.