Проверка массива различных форм объектов в YUP - PullRequest
0 голосов
/ 04 октября 2019

Я использую formik для проверки формы и столкнулся с некоторыми проблемами при проверке массива. Вот моя структура формы

{
 flow: [
  { text: "hello"
  },
  { input: "world"
  },
  { buttons: [
       'hi',
       'hello'
     ]
  }
 ]
}

Я должен создать схему проверки для этого. Таким образом, массив может содержать любой из этих объектов.

Я пробовал это,

export const validationSchema = yup.object().shape({
  flow: yup.array().of(
      yup.mixed().oneOf([
        {
          text: yup.string().required('Enter text'),
        },
        {
          buttons: yup.array().of(yup.string().required('Enter button title')),,
        },
        {
          input: yup.string()
          ),
        }
      ])
  ),
});

Но я получаю следующее сообщение об ошибке formik:

flow:[

"flow[0] must be one of the following values: [object Object], [object Object]",
"flow[1] must be one of the following values: [object Object], [object Object]"

]

Как решитьэто?

1 Ответ

0 голосов
/ 04 октября 2019

Если вы посмотрите на сигнатуру функции для метода oneOf:

mixed.oneOf(arrayOfValues: Array<any>, message?: string | function): Schema

Первый параметр - это массив any, поэтому любое значение будет допустимым в массиве в первом параметре. ,Это второй message аргумент, который может быть только строкой / функцией.

При этом ваш код выглядит правильно, поэтому я не уверен, почему вы будете получать какие-либо ошибки. Может быть, попробуйте добавить аргумент сообщения и посмотреть, успокоит ли это вещи. Какую именно ошибку вы получаете, если она есть?

...