Да, проверка - это либо строка, либо массив строк - PullRequest
0 голосов
/ 02 июля 2019

Я хотел бы проверить, что поле является либо строкой, либо массивом строк

Вот минимальный ошибочный пример , в котором используется formik, но на самом деле я работаю на стороне серверапроверка с использованием yup.

  {
    email: yup
      .mixed()
      .oneOf([yup.array().of(yup.string()), yup.string()])
      .nullable()
  }

Ответы [ 2 ]

1 голос
/ 03 июля 2019
{
  email: yup.mixed()
    .when('isArray', {
      is: Array.isArray,
      then: yup.array().of(yup.string()),
      otherwise: yup.string(),
    })
}

Но набор флажков может создавать массив, а ввод текста - нет. Вы ищете решение для проверки электронных писем, разделенных на разделители?

0 голосов
/ 03 июля 2019

oneOf работает только с литеральными значениями.Ленивый позволяет вам предоставить схему динамически, как показано ниже

{ 
  email: yup.lazy(val => (Array.isArray(val) ? yup.array().of(yup.string()) : yup.string()))
}
...