Ответ
Yup — это библиотека для валидации данных в JavaScript, часто используемая с формами в React. Она позволяет описывать схемы валидации в декларативном стиле.
Пример:
import * as yup from 'yup';
const schema = yup.object().shape({
email: yup.string().email('Invalid email').required('Required'),
password: yup.string().min(8, 'Too short').required(),
});
// Проверка
schema.validate({ email: 'test@test.com', password: '12345678' })
.then(valid => console.log(valid))
.catch(err => console.log(err.errors));
Ключевые особенности:
- Цепочки валидаторов (
.string(),.number(),.required()и т.д.) - Кастомные сообщения об ошибках
- Асинхронная валидация
- Интеграция с Formik
- Возможность создания сложных зависимых валидаций
Yup часто используют вместе с Formik для валидации форм в React-приложениях.
Ответ 18+ 🔞
А, Yup, ёпта, эта самая библиотечка, которая заставляет твои данные плясать под её дудку! Представь, ты накодил форму, а пользователь туда какую-то дичь суёт — Yup как раз тот самый злой барин, который всё проверит и по шапке надаёт, если что не так.
Вот смотри, как это выглядит, простой пример:
import * as yup from 'yup';
const schema = yup.object().shape({
email: yup.string().email('Ну это не почта, ёпта').required('А где, блядь, почта?'),
password: yup.string().min(8, 'Слишком короткий, подумай о безопасности!').required(),
});
// А теперь проверяем
schema.validate({ email: 'test@test.com', password: '12345678' })
.then(valid => console.log('Всё чики-пуки, проходи'))
.catch(err => console.log('Ошибки, сука:', err.errors));
Чем она хороша, эта мартышлюшка?
- Цепочки, как у собаки на поводке. Накидал
.string().email().required()— и пошло-поехало. Всё понятно и по делу. - Сообщения свои впихнуть можно. Не нравится стандартное «Invalid email»? Напиши «Ты это, дружок, нормальную почту введи, а то я волнуюсь ебать!».
- Может и асинхронно потянуть. Если нужно на сервер сбегать, проверить, свободен ли логин — без проблем.
- С Formik'ом они как сиамские близнецы. В React-формах это вообще классика, все так делают. Formik форму рисует, а Yup её по башке за непослушание.
- Зависимости накрутить можно. Типа «если галочка стоит, то это поле обязательно». Сделает, хитрая жопа.
Короче, если не хочешь вручную городить кучу if-ов на каждое поле, чтобы ловить, что пользователь в age написал «сто лет» — бери Yup. Он всё устроит, почти красиво. Главное — не забывай, что он всё-таки библиотека, а не волшебник, иногда и свою логику придётся дописывать.