Отладка этой проверки Yup с помощью метода .when () с использованием метода .matches () - PullRequest
0 голосов
/ 03 марта 2020

У меня проблемы с проверками Yup и использованием метода .when () с условием .matches () regex.

Я не Конечно, если эта реализация верна, в документации Yups упоминается, что функцию matcher можно использовать с методом .when (), но я не могу найти никаких примеров, и я сталкиваюсь с этой ошибкой при реализации кода следующим образом:

Error: Cyclic dependency, node was:"description"

Вот мой код, я пытаюсь настроить максимальную длину в зависимости от того, включен ли da sh во входную строку:

export default Yup.object().shape({
  description: Yup.string()
    .matches(
      /^[a-zA-Z0-9-]*$/,
      'Description can only contain letters, numbers and dashes'
    )
    .when('description', {
      is: (val) => val == /^[a-zA-Z0-9-]*$/,
      then: Yup.string().max(15, 'max length is 15'), // maxlength 15
      otherwise: Yup.string().max(14, 'max length is 14') // maxlength 14
    }),
});

Вот ссылка на документация, которую я просматривал:

https://github.com/jquense/yup

Я пытаюсь выяснить, как настроить мой код так, чтобы ошибка исчезла, и проверка правильности работает как задумано. Если во входной строке, которую пользователь вводит, есть da sh, максимальная длина должна быть 15, в противном случае она должна быть 14.

1 Ответ

0 голосов
/ 03 марта 2020

Попробуйте это:

description: yup.string().when([], (v, { originalValue }) => 
   originalValue.description == /^[a-zA-Z0-9-]*$/ ? Yup.string().max(15, 'max length is 15') : Yup.string().max(14, 'max length is 14')
)
...