Условная проверка Yup не работает - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть formik form с ниже initialValues

 const initialValues1 = { 
   people: [
   {
     id: Math.random(),
     email: "",
     isNewUser: true,
     profile: {
       firstName: "",
       lastName: "",

     }
   }
  ]
 };

Я хочу проверить firstName и lastName только когда isNewUser is true по Yup Я пытаюсь ниже, но это не работает. Как можно проверить условно в Formik Yup

 people: Yup.array().of(
  Yup.object().shape({
    isNewUser: Yup.boolean(),
    profile: Yup.object().shape({
        firstName: Yup
          .string()
          .when('isNewUser', {
            is: true,
            then: Yup.string().required("First name is required")
          }),
     })
   })
  )

1 Ответ

0 голосов
/ 25 апреля 2020

Согласно документам ,

Настройте схему на основе родственного или дочерних дочерних полей . Вы можете предоставить литерал объекта, где ключом является значение или функция сопоставления, а затем предоставить истинную схему и / или иное для условия сбоя.

Поэтому переместите isNewUser, чтобы отобразить его как брат , Как это:

const initialValues1 = { 
   people: [
   {
     id: Math.random(),
     email: "",
     //isNewUser: true, // <--------------- remove this
     profile: {
       firstName: "",
       lastName: "",
       isNewUser: true // <---------------- here.
     }
   }
  ]
 };
...