Formik with Yup - Выдача исключения при использовании функции test () - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь написать настраиваемую проверку в Yup для использования в моих формах React Formik. Каждый раз, когда я пытаюсь использовать эту настраиваемую проверку, я получаю следующую ошибку: «yupError.inner is undefined».

Кажется, это происходит всякий раз, когда я использую функцию test () для проверки String. Я приложил одну из ситуаций, когда это вызывает ошибку.

В автономном файле ...

export const validate_birthday = Yup.string().required('We need your birthday to make sure it is you')
    .test({
        name: "DOB", 
        message: "We need a valid birthday to make sure it is you",
        test: value => {
               return moment(value).isMoment() &&
               moment(value).isBefore(moment()) &&
               moment(value).isAfter(moment().subtract(120, 'years'))
             }
        });

В компоненте React ...

const validationSchema = Yup.object().shape({
     birthday: validate_birthday
});

А скриншот ошибки все выкидывает ...

enter image description here

1 Ответ

1 голос
/ 11 мая 2020

Оказывается, моя тестовая функция не охватывала достаточное количество ситуаций и вызывала ошибку Javascript во время оценки.

После добавления всех тестовых примеров это сработало правильно.

if (!value || value === '') {
   return false;
}
if (value.replace(' ', '').length < 10) {
   return false;
}
const m = moment(value, 'MM/DD/YYYY');
return (
     m.isValid() &&
     m.isBefore(moment()) &&
     m.isAfter(moment().subtract(120, 'years'))
);
...