Ant Design предоставляет мощный механизм для валидации
форм через компонент Form и его подкомпоненты,
такие как Form.Item. Валидация позволяет проверять
корректность вводимых пользователем данных и управлять отображением
ошибок на уровне интерфейса.
Компонент Form используется для объединения группы
полей, а Form.Item оборачивает конкретное поле ввода.
Валидация выполняется через свойства rules и
validateTrigger:
import { Form, Input, Button } from 'antd';
<Form
name="exampleForm"
initialValues={{ username: '' }}
onFin ish={(values) => console.log(values)}
>
<Form.Item
label="Имя пользователя"
name="username"
rules={[
{ required: true, message: 'Пожалуйста, введите имя пользователя' },
{ min: 3, message: 'Имя должно содержать минимум 3 символа' }
]}
>
<Input />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
Отправить
</Button>
</Form.Item>
</Form>
rules — массив правил проверки для
конкретного поля. Каждое правило может содержать required,
min, max, pattern,
type и другие параметры.message — текст ошибки, который будет
отображен при нарушении правила.validateTrigger — определяет событие,
при котором выполняется проверка (onChange,
onBlur).Обязательные поля (required)
Проверяет, что значение не пустое. Может использоваться для
Input, Select, Checkbox и других
компонентов.
Проверка длины (min, max,
len) Позволяет задать ограничения по количеству
символов или элементов (например, длину строки или количество выбранных
опций).
Регулярные выражения (pattern)
Поддерживает гибкие проверки с использованием RegExp:
rules={[
{ pattern: /^[A-Za-z0-9]+$/, message: 'Только латинские буквы и цифры' }
]}Тип данных (type) Например,
type: 'email' автоматически проверяет корректность
email-адреса, type: 'number' проверяет числовые
значения.
Кастомная проверка (validator)
Позволяет реализовать сложные проверки через функцию:
rules={[
{
validator: (_, value) => {
if (!value || value.includes('abc')) {
return Promise.resolve();
}
return Promise.reject('Значение должно содержать "abc"');
}
}
]}По умолчанию Form.Item валидирует поле при событии
onChange. Можно изменить это поведение:
<Form.Item
name="email"
rules={[{ type: 'email', message: 'Некорректный email' }]}
validateTrigger="onBlur"
>
<Input />
</Form.Item>
onChange — проверка при каждом
изменении поля.onBlur — проверка при уходе фокуса с
поля.validateTrigger={['onChange', 'onBlur']}.Иногда необходимо проверять поле в зависимости от значения другого.
Это реализуется через функцию validator с доступом к
остальным полям формы:
<Form.Item
name="confirmPassword"
dependencies={['password']}
rules={[
{ required: true, message: 'Подтвердите пароль' },
({ getFieldValue }) => ({
validator(_, value) {
if (!value || getFieldValue('password') === value) {
return Promise.resolve();
}
return Promise.reject('Пароли не совпадают');
},
}),
]}
>
<Input.Password />
</Form.Item>
dependencies — массив полей, от
которых зависит валидация текущего.getFieldValue — метод для получения
значения другого поля формы.Ошибки автоматически отображаются под полем через
Form.Item с использованием свойства help и
состояния validateStatus:
validateStatus="error" — отображает поле как
ошибочное.help="Сообщение об ошибке" — позволяет кастомизировать
текст ошибки.Можно управлять отображением вручную:
<Form.Item
validateStatus="error"
help="Неправильный формат"
>
<Input />
</Form.Item>
Функция validator может возвращать Promise
для асинхронных проверок, например, проверки уникальности имени
пользователя через API:
rules={[
{
validator: async (_, value) => {
const isAvailable = await checkUsernameAvailability(value);
if (!isAvailable) {
return Promise.reject('Имя уже занято');
}
return Promise.resolve();
}
}
]}
Ant Design поддерживает локализацию сообщений
валидации через ConfigProvider. Можно переопределять тексты
ошибок по всему приложению:
import { ConfigProvider } from 'antd';
import ruRU from 'antd/locale/ru_RU';
<ConfigProvider locale={ruRU}>
<App />
</ConfigProvider>
Это изменяет стандартные сообщения, такие как
"This field is required" на
"Пожалуйста, введите значение".
Комбинируя все вышеописанные возможности, можно строить формы любой сложности с точной настройкой правил, зависимостей, асинхронных проверок и кастомного отображения ошибок. Ant Design обеспечивает прозрачный API и удобный визуальный контроль ошибок для пользователей.