Вопрос проверяет понимание принципов валидации данных, управления состоянием форм и обработки ошибок без сторонних инструментов.
Кастомную валидацию обычно реализуют через функции, которые проверяют значения полей и возвращают ошибки. Состояние значений и ошибок хранят в useState или редьюсере. Проверки запускают при изменении поля, потере фокуса или отправке формы. Ошибки отображаются рядом с соответствующими полями. Такой подход даёт полный контроль, но требует больше кода и дисциплины.
Кастомная валидация полезна, когда требования простые или нестандартные и подключение библиотеки избыточно.
Определение: кастомная валидация формы — это ручная проверка пользовательских данных по заданным правилам до отправки или обработки формы.
Перед реализацией важно разделить данные формы и логику проверки.
Состояние значений
Хранит текущие данные полей
Состояние ошибок
Хранит сообщения ошибок по каждому полю
Функции-валидаторы
Проверяют одно поле или всю форму
const validateEmail = (value: string) => {
if (!value) return "Email обязателен";
if (!value.includes("@")) return "Некорректный email";
return null;
};
const error = validateEmail(email);
// если error !== null — показываем сообщение
При onBlur — мягкий UX
При onChange — мгновенная обратная связь
При onSubmit — финальная проверка
Валидация в рендере без мемоизации
Смешивание UI и логики проверок
Отсутствие единого формата ошибок
Кастомная валидация оправдана для простых форм или нестандартных правил, но для сложных сценариев лучше использовать специализированные библиотеки.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию