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

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

от vicenta_kertzmann , в категории: JavaScript , 8 месяцев назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

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

от hoyt.jerde , 8 месяцев назад

@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. Если все поля валидны, выполняется логика для отправки данных на сервер.