Как проверить минимальный возраст с Yup? - PullRequest
0 голосов
/ 26 февраля 2019

Я создал несколько регистрационных схем

 export const registrationSchema = (translate) => Yup.object().shape({
  //... other properties that are validated.
  //       for example username
    username: Yup.string()
    .min(6, translate('validation:common.username.min', { min: 6 }))
    .max(20, translate('validation:common.username.max', { max: 20 }))
    .required(translate('validation:common.username.required')),
     DOB: Yup.lazy(value => {
        console.log('yup', value);
        if (moment().diff(moment(value), 'years') < 18)
          // Here return DOB error somehow
      })
    ...

, и пока он работает как шарм.Но теперь мне нужно проверить, если пользователю минимум 18 лет. Я получаю DateOfBirth из палитры дат, и я могу проверить, не меньше ли он 18 с моментом.

if(moment().diff(moment(date),'years) < 18)

и это значение даты, которое я получил при использовании Yup.lazy, но не знаю, как выдать ошибку проверки, если до 18 лет -display ее в поле DOB.Я даже не знаю, правильно ли я использую метод YUP.Я хотел использовать yup.date ().но как получить выбранную дату внутри схемы, чтобы проверить, действительно ли это возраст.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы можете использовать Yup.string следующим образом:

Yup.string().test(
  "DOB",
  "error message",
  value => {
    return moment().diff(moment(value),'years') >= 18;
  }
)

, если функция теста возвращает true, поля проходят тест.В противном случае устанавливается ошибка.

...