Как правильно сделать валидацию формы input в react.js?

Пользователь

от vicenta_kertzmann , в категории: JavaScript , год назад

Как правильно сделать валидацию формы input в react.js?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от hoyt.jerde , год назад

@vicenta_kertzmann 

В React.js валидацию формы input можно сделать следующим образом:

  1. Создайте компонент формы с необходимыми полями и состоянием для значений полей и ошибок.
  2. Напишите функцию обработчика изменения значения поля, которая будет обновлять состояние формы.
  3. Для каждого поля определите правило валидации, которое должно быть выполнено при отправке формы. Например, для валидации email можно использовать регулярное выражение.
  4. Напишите функцию проверки валидности формы, которая будет возвращать true, если все правила валидации выполнены, и false в противном случае.
  5. При отправке формы вызовите функцию проверки валидности формы. Если все поля валидны, выполните необходимую логику (например, отправку данных на сервер), иначе отобразите ошибки.


Пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import React, { useState } from "react";

const MyForm = () => {
  const [formData, setFormData] = useState({ email: "", password: "" });
  const [errors, setErrors] = useState({ email: "", password: "" });

  const handleChange = (e) => {
    const { name, value } = e.target;
    setFormData((prevData) => ({
      ...prevData,
      [name]: value
    }));
  };

  const validateForm = () => {
    let valid = true;
    const newErrors = { email: "", password: "" };

    // Валидация email
    if (!formData.email) {
      valid = false;
      newErrors.email = "Введите email";
    } else if (!/S+@S+.S+/.test(formData.email)) {
      valid = false;
      newErrors.email = "Некорректный email";
    }

    // Валидация пароля
    if (!formData.password) {
      valid = false;
      newErrors.password = "Введите пароль";
    } else if (formData.password.length < 6) {
      valid = false;
      newErrors.password = "Пароль должен содержать минимум 6 символов";
    }

    setErrors(newErrors);
    return valid;
  };

  const handleSubmit = (e) => {
    e.preventDefault();
    if (validateForm()) {
      // Логика для отправки данных на сервер
    }
  };

  return (
    
      
      {errors.email && {errors.email}} // Отобразить ошибку, если есть
      
      
      {errors.password && {errors.password}} // Отобразить ошибку, если есть
      
      Отправить
    
  );
};

export default MyForm;


В этом примере компонент MyForm содержит поле ввода для email и пароля, а также кнопку отправки формы. При изменении значения в полях вызывается функция обработчика handleChange, которая обновляет состояние формы formData. При отправке формы вызывается функция проверки валидности validateForm, которая проверяет значения полей в соответствии с заданными правилами валидации и обновляет состояние ошибок errors. Если все поля валидны, выполняется логика для отправки данных на сервер.

Пользователь

от aubree , 5 месяцев назад

@vicenta_kertzmann 

Заметьте, что в примере выше в функции проверки валидности формы (validateForm) используется простая проверка наличия значения в поле и регулярное выражение для валидации email. В реальном проекте можно использовать более сложные правила валидации или библиотеки для удобного управления валидацией форм.


Также стоит отметить, что в примере не представлена визуальная часть компонента формы, так как это может быть варьируемо и зависит от дизайна приложения. Вместо отображения ошибок непосредственно рядом с полями формы, вы можете выбрать другой способ показа ошибок (например, под формой, всплывающее уведомление и т.д.).


Надеюсь, это поможет вам сделать валидацию формы input в React.js. Если у вас возникнут еще вопросы или вам понадобится дополнительная помощь, не стесняйтесь задать их.