0Pricing
React Academy · Урок

Правила валидации и сообщения об ошибках

Применяйте встроенные правила валидации (required, minLength, pattern) и отображайте сообщения об ошибках.

«Правила валидации и сообщения об ошибках» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Добро пожаловать

В этом уроке Вы добавите встроенные правила проверки к полям React Hook Form и научитесь отображать понятные пользователю сообщения об ошибках под каждым полем ввода.

Встроенные правила проверки

Передайте объект правил вторым аргументом в register(). Встроенные правила включают: `required`, `minLength`, `maxLength`, `min`, `max`, `pattern` и `validate`.
<input
  {...register('email', {
    required: 'Email is required',
    pattern: {
      value: /^[^@]+@[^@]+\.[^@]+$/,
      message: 'Invalid email address',
    },
  })}
/>

Обязательные поля

Задайте для `required` строковое значение, чтобы сделать поле обязательным. Эта строка станет сообщением об ошибке. Значение `true` использует общее сообщение.
register('name', { required: 'Name is required' })
// or
register('name', { required: true })

Ограничения длины

Используйте `minLength` и `maxLength` с объектом `{ value, message }`, чтобы задать ограничения на количество символов и пользовательские сообщения об ошибках.
register('username', {
  minLength: { value: 3, message: 'At least 3 characters' },
  maxLength: { value: 20, message: 'At most 20 characters' },
})

Проверка по шаблону

Правило `pattern` принимает значение RegExp. Используйте его для проверки формата электронной почты, номеров телефонов и любых других шаблонов строк.
register('phone', {
  pattern: {
    value: /^[0-9]{10,11}$/,
    message: 'Enter a valid phone number',
  },
})

Отображение ошибок

Получите объект `errors` из formState. Для каждого поля, не прошедшего проверку, в нём будет запись со свойством `message`. Условно отобразите это сообщение под полем ввода.
const { register, handleSubmit, formState: { errors } } = useForm();

<input {...register('email', { required: 'Required' })} />
{errors.email && <p className="error">{errors.email.message}</p>}

Пользовательская проверка с помощью validate

Правило `validate` принимает функцию, которая возвращает `true` для корректного значения или строку ошибки для некорректного. Используйте его для бизнес-логики, которую невозможно выразить встроенными правилами.
register('age', {
  validate: value =>
    parseInt(value) >= 18 || 'You must be at least 18',
})

Несколько пользовательских проверок

Передайте в `validate` объект именованных проверок, чтобы выполнить несколько пользовательских проверок для одного поля.
register('password', {
  validate: {
    hasUpper: v => /[A-Z]/.test(v) || 'Needs uppercase',
    hasDigit: v => /[0-9]/.test(v) || 'Needs a number',
  }
})

Отображение количества ошибок

Подсчитайте общее количество ошибок, чтобы включить или отключить кнопку отправки либо показать сводку. Используйте Object.keys(errors).length.
const hasErrors = Object.keys(errors).length > 0;
<button type="submit" disabled={hasErrors}>Submit</button>

Стилизация полей с ошибками

Примените CSS-класс к полям ввода с ошибками, чтобы визуально выделить их красной рамкой. Проверяйте errors[fieldName], чтобы условно применить этот класс.
<input
  {...register('email', { required: true })}
  className={errors.email ? 'input-error' : ''}
/>

Быстрая проверка

Как отобразить сообщение об ошибке для поля с именем «email» в React Hook Form?

Итоги

Добавляйте правила проверки вторым аргументом в register(): required, minLength, maxLength, pattern, min, max и validate. Читайте errors[fieldName].message из formState, чтобы отображать сообщения.

Далее

Следующий урок: **Проверка схемы с помощью Zod** — Вы интегрируете @hookform/resolvers и схемы Zod для типобезопасной проверки форм.

Часто задаваемые вопросы

Урок «Правила валидации и сообщения об ошибках» бесплатный?

Да — полный текст урока «Правила валидации и сообщения об ошибках» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Правила валидации и сообщения об ошибках»?

Применяйте встроенные правила валидации (required, minLength, pattern) и отображайте сообщения об ошибках. Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Правила валидации и сообщения об ошибках»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Начало работы с React Hook Form
  2. Правила валидации и сообщения об ошибках
  3. Валидация схем с помощью Zod
  4. Динамические поля с useFieldArray
← Назад к React Academy