Формы являются неотъемлемой частью многих веб-приложений. Они позволяют пользователям взаимодействовать с приложением и предоставлять данные. В React есть два способа обработки форм: контролируемые компоненты и неконтролируемые компоненты.

Контролируемые компоненты — предпочтительный способ обработки форм в React. В управляемом компоненте данные формы хранятся в состоянии компонента. Это означает, что компонент отвечает за обновление данных формы всякий раз, когда пользователь меняет их.

Для этого вы можете использовать хук useState для создания переменной состояния для каждого поля формы. Затем вы можете привязать обработчик событий onChange поля формы к функции, которая обновляет переменную состояния.

Например, следующий код показывает, как создать управляемый компонент для поля ввода текста:

import React, { useState } from "react";

function InputField() {
  const [value, setValue] = useState("");

  const handleChange = (e) => {
    setValue(e.target.value);
  };

  return (
    <input
      type="text"
      value={value}
      onChange={handleChange}
    />
  );
}

В этом примере переменная состояния значения хранит текущее значение поля ввода текста. Функция handleChange вызывается всякий раз, когда пользователь меняет значение поля ввода текста. Эта функция обновляет переменную состояния значения новым значением.
Неконтролируемые компоненты встречаются реже, чем контролируемые. В неконтролируемом компоненте данные формы не сохраняются в состоянии компонента. Вместо этого данные формы хранятся в DOM. Это означает, что компоненту не нужно обновлять данные формы всякий раз, когда пользователь меняет их.

Чтобы использовать неконтролируемый компонент, вы можете просто добавить атрибут value в поле формы. Атрибут value указывает начальное значение поля формы. Затем пользователь может изменить значение поля формы, взаимодействуя с DOM.
Например, следующий код показывает, как создать неконтролируемый компонент для поля ввода текста:

<input type="text" value="Hello, world!" />

В этом примере атрибуту value поля ввода текста присвоено значение Hello, world!. Это начальное значение поля ввода текста. Затем пользователь может изменить значение поля ввода текста, взаимодействуя с DOM.

➡️ Какой подход использовать?

Лучший подход к использованию зависит от ваших конкретных потребностей. Если вам нужно иметь возможность реагировать на изменения данных формы, то вам следует использовать управляемый компонент. Это связано с тем, что компонент сможет обновлять данные формы всякий раз, когда пользователь меняет их.
Если вам не нужно иметь возможность реагировать на изменения данных формы, то вы можете использовать неуправляемый компонент. Это связано с тем, что неконтролируемый компонент проще реализовать и он не требует использования перехватчика useState.

➡️ Отправка форм.

Когда пользователь отправляет форму, вам необходимо обработать событие отправки формы. Для этого можно использовать обработчик события onSubmit элемента формы. Обработчик событий onSubmit вызывается, когда пользователь нажимает кнопку отправки.
В обработчике событий onSubmit вы можете выполнять такие действия, как проверка данных формы и отправка данных формы на сервер.

Например, следующий код показывает, как обрабатывать событие отправки формы для формы, содержащей поле ввода текста:

function Form() {
  const [value, setValue] = useState("");

  const handleSubmit = (e) => {
    // Validate the form data

    // Send the form data to a server
  };

  return (
    <form onSubmit={handleSubmit}>
      <input type="text" value={value} onChange={setValue} />
      <button type="submit">Submit</button>
    </form>
  );
}

В этом примере функция handleSubmit вызывается, когда пользователь нажимает кнопку отправки. Функция handleSubmit проверяет данные формы, а затем отправляет данные формы на сервер.

Я надеюсь, что эта статья помогла вам понять, как обрабатывать формы и пользовательский ввод в React.