У меня есть модаль, который содержит несколько форм, и мне нужно получить доступ к имени конкретной формы, которая редактируется для обновления правильных данных.

Мой обработчик onChange:

const onFormChange = (e: React.FormEvent<HTMLFormElement>) => {
    const target = e.target as HTMLInputElement;
    if (target.name === undefined || target.name === '') {
      return;
    }
    const targetForm = target.form;
    const formName = (targetForm || { name: '' }).name;
    ...
    //handle updating data

}

Logs, которые я добавил, показывает, что значение {{x0}} верно, возвращая:

<form name="createUser">
...
</form>

Однако затем, когда я попытаюсь извлечь строку createUser, используя:

const formName = (targetForm || { name: '' }).name;

Вместо строки {{x0}} возвращает элемент div из исходной цели:

<input name='email' type='text' id='1'>

Кто-нибудь знает, почему это происходит или как я могу правильно получить доступ к form.name?

0
rocko1515 14 Янв 2021 в 19:49

2 ответа

Лучший ответ

Я решил проблему, получив имя формы через

const formName = targetForm ? targetForm.getAttribute('name') || '' : '';
0
rocko1515 14 Янв 2021 в 17:37

Тип Rect.formevent не содержит имя формы, вы можете использовать базовый список, чтобы вытащить имя формы, где изменяется вход.

onChange={(e: React.BaseSyntheticEvent): void => {
 console.log(e.target.form.name);
 ....
 ...
 ..
}}
1
Wajeeh Aslam 14 Янв 2021 в 17:37