Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Yup验证模式对象条件验证_Reactjs_Validation_Conditional Statements_Formik_Yup - Fatal编程技术网

Reactjs Yup验证模式对象条件验证

Reactjs Yup验证模式对象条件验证,reactjs,validation,conditional-statements,formik,yup,Reactjs,Validation,Conditional Statements,Formik,Yup,我想说,如果type=1,那么验证成员身份对象,确实使用.when()进行了尝试,但必须使用对象的每个部分进行验证(仅当type=1时,才进行验证) validationSchema={Yup.object().shape({ //General name: Yup.string().min(3).required('Name is required.'),

我想说,如果type=1,那么验证成员身份对象,确实使用.when()进行了尝试,但必须使用对象的每个部分进行验证(仅当type=1时,才进行验证)

 validationSchema={Yup.object().shape({
                        //General
                        name: Yup.string().min(3).required('Name is required.'),
                        email: Yup.string().email().required('Email is required.'),
                        contactNo: Yup.number().required('Number is required.'),
                        address: Yup.string().required('Address is required.'),
                        country: Yup.string().required('Country is required.'),
    
    
                        memberShip: Yup.object() 
                        .shape({
//Something like this
if(type ===1){
                            memberShipNo: Yup.string().required('MemberShip Number is required.'),
                            memberShipStart: Yup.string().required( 'MemberShip Number is required.'),
                            fee: Yup.string().required('MemberShip Number is required.')},
                        }),
                        
                     
    
                        verified: Yup.bool(),
                    })}

处理呈现条件字段问题的一种方法是使用三元和扩展。此解决方案确实需要少量的重复代码,但可能还有其他(更好的)方法,这取决于您是否需要更好的解决方案

在本例中,如果
类型===1
,则所有字段都是
必需的
,否则不是必需的,而是可选的

 memberShip: Yup.object()
  .shape({
    ...(type === 1 ? {
      memberShipNo: Yup.string().required('MemberShip Number is required.'),
      memberShipStart: Yup.string().required('MemberShip Number is required.'),
      fee: Yup.string().required('MemberShip Number is required.')
    } : {
      memberShipNo: Yup.string(),
      memberShipStart: Yup.string(),
      fee: Yup.string()
    }),
  }),

你的问题不太清楚,但你说了
type=1
,但我在你的模式中没有看到
type
字段。我想你需要基于某些其他字段选择的条件验证,请澄清。他做了一些编辑,希望这有帮助。类型验证是一个正在获取的道具,因此
type
是一个你需要的道具iring
membership
object否则是可选的?是的,因此如果type=2或其他东西不验证objectI,则会不断收到错误解析错误:意外标记,应为“,”@chrisjnportgieter修复了它