Ошибка типа: не удается прочитать свойство ‘name’ неопределенного значения в поле формы ReactJS

#reactjs #undefined

#reactjs #не определено

Вопрос:

Я пытаюсь связать значения моего массива, используя [event.target.name]:event.target.value

но я получаю эту ошибку:

Ошибка типа: не удается прочитать свойство ‘name’ неопределенного значения.

Вот как выглядит мой код:

Массив

  const [data, setData] = useState({
        email: '', first_name: '', last_name: '', occupation: '',
        farm_description: '', farm_name: '', username:'',
        registration_status: false, capacity: '50-100',
        location: '', major_product: '', phone_num: ''
    });
 

Обработчик изменений:

 const handleChange = (event) => {
        setData({
            ...data,
            [event.target.name]: event.target.value,
        });
    };
 

Поле:

   <input type="text" placeholder="John" className="border-remove" 
name="first_name" type="text" onChange={props.handleChange('first_name')}/>
 

Комментарии:

1. onChange={props.handleChange} — Этого достаточно

Ответ №1:

Вы передаете first_name вместо события, измените код на это:

 <input type="text" placeholder="John" className="border-remove" name="first_name" type="text" onChange={props.handleChange}/>
 

Ответ №2:

Вы вызываете handleChange сразу после рендеринга, а не передаете функцию для добавления в качестве слушателя. Вы также передаете ему first_name параметр, когда функция принимает только параметр события. Используйте вместо этого:

 onChange={props.handleChange}
 

Ответ №3:

Измените эту строку кода

onChange={props.handleChange('first_name')} Для

onChange={props.handleChange}

В вашем коде вы не передаете событие функции, чтобы оно было неопределенным.

[ИЛИ] — передать событие явно методу.

 onChange={(e) => props.handleChange(e)}
 

Ответ №4:

Функция onChange ввода, и если <input /> и функция изменения дескриптора в том же компоненте, вам не нужно вызывать как props.handleChange . вы можете просто вызвать как handleChange

 onChange={props.handleChange}