В библиотеке Ant Design для управления формами
используется компонент Form, который предоставляет
встроенные механизмы валидации. Ошибки валидации возникают, когда
данные, введённые пользователем, не соответствуют заданным правилам
(rules). Для их корректного отображения и управления важно
понимать структуру ошибок и способы их обработки.
import { Form, Input, Button } from 'antd';
<Form
name="basic"
onFin ish={onFinish}
onFinishFai led={onFinishFailed}
>
<Form.Item
label="Email"
name="email"
rules={[{ required: true, message: 'Введите email!' }, { type: 'email', message: 'Некорректный email!' }]}
>
<Input />
</Form.Item>
<Form.Item>
<Button type="primary" htmlType="submit">
Отправить
</Button>
</Form.Item>
</Form>
В примере выше при нарушении правил валидации автоматически отображается соответствующее сообщение. Важные моменты:
onFinishFailed — функция, вызываемая при неудачной
попытке отправки формы.rules генерирует своё сообщение об
ошибке.Для более сложной логики необходимо получать ошибки напрямую.
Form предоставляет метод getFieldsError,
который возвращает массив объектов с информацией об ошибках каждого
поля:
const errors = form.getFieldsError();
errors.forEach(({ name, errors }) => {
if (errors.length > 0) {
console.log(`${name[0]}: ${errors[0]}`);
}
});
Ключевые моменты:
name — массив, содержащий имя поля.errors — массив сообщений, связанных с конкретным
полем.Ant Design позволяет управлять положением и стилем сообщений об
ошибках через свойства validateStatus и
help:
<Form.Item
label="Пароль"
validateStatus={hasError ? "error" : "success"}
help={hasError ? "Пароль слишком короткий" : ""}
>
<Input.Password />
</Form.Item>
validateStatus может принимать значения:
"success", "warning", "error",
"validating".help используется для отображения текстового сообщения
об ошибке или подсказки.Это позволяет создавать полностью кастомизированные формы с собственным поведением ошибок.
Ant Design поддерживает асинхронные проверки через функцию
validator внутри правил:
<Form.Item
name="username"
label="Имя пользователя"
rules={[
{ required: true, message: 'Введите имя пользователя!' },
{
validator: async (_, value) => {
const exists = await checkUsernameExists(value);
if (exists) return Promise.reject(new Error('Имя занято'));
}
}
]}
>
<Input />
</Form.Item>
Особенности:
Promise.Promise.reject с объектом Error вызывает
отображение ошибки.Для динамических форм или сложной логики может потребоваться
полностью программное управление ошибками. Для этого используют метод
setFields:
form.setFields([
{
name: 'email',
errors: ['Неверный формат email']
}
]);
Особенности использования:
errors: [].Часто требуется выводить ошибки вне стандартного компонента
Form.Item. Для этого можно использовать
Form.ErrorList:
<Form.ErrorList errors={form.getFieldError('email')} />
name для
полей, чтобы ошибки правильно ассоциировались с конкретным
input.onFinishFailed для логирования
ошибок на уровне всей формы.help и
validateStatus позволяет создавать UX с понятной
обратной связью для пользователя.Ошибки валидации в Ant Design предоставляют мощные инструменты для гибкого управления формами, позволяя как автоматическую проверку, так и полное программное управление с кастомным отображением.