Что такое yup

Ответ

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. Он всё устроит, почти красиво. Главное — не забывай, что он всё-таки библиотека, а не волшебник, иногда и свою логику придётся дописывать.