Обязательное поле на основе значения другого поля - formik, yup

У меня есть форма реагирования, где есть поле выбора, скажем, поле имеет значения A,B,C,D,E,F.

скажем, другое поле, ChooseSubType, появляется, только если я выбираю B или D, и это поле будет обязательным, только когда оно появляется, а не до этого.

Теперь, как мне заставить это работать?

вот код для первого поля, т.е. выберите поле

chooseAlphabet: Yup.string().required('field required'),
chooseSubType : Yup.string().when('chooseAlphabet',
('chooseAlphabet',schema)=>{
   console.log('value business : ',chooseAlphabet);
   if(chooseAlphabet === "B"||"D"){
     return schema;
   }else{
     return schema.required('field required');
   }
  }),

но этот код не работает.

Теперь, какие изменения я делаю здесь, чтобы сделать эту работу, как я хочу?

0 ответов

Я знаю, что уже немного поздно, но ты можешь попробовать это

chooseSubType: yup.string().when('chooseAlphabet', {
  is: 'B',
  then: schema => schema,
  otherwise: yup.string().when('type', {
    is: 'D',
    then: yup.string().required('field required.')
  })
})

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

chooseAlphabet: Yup.string().required('field required'),
chooseSubType : Yup.string().when('chooseAlphabet',
(chooseAlphabet,schema)=>{
    console.log('value business : ',chooseAlphabet);
    if(chooseAlphabet === "B"||"D"){
       return schema;
    }else{
       return schema.required('field required');
    }
}),

Для вас схема 2-го параметра не определена.

 chooseAlphabet: Yup.string().required('field required'),
        chooseSubType : Yup.string().when('chooseAlphabet',
        (chooseAlphabetValue)=>{
           console.log('value business : ',chooseAlphabetValue);
           if(chooseAlphabetValue=== "B"||"D"){
             return Yup.string();
           }else{
             return Yup.string().required('field required');
           }
          }),
Другие вопросы по тегам