Reactjs 计划[0]。计时[0]。开始时间必须是'string'类型,但最终值为:'null`-在字段保持为空时获取此值

Reactjs 计划[0]。计时[0]。开始时间必须是'string'类型,但最终值为:'null`-在字段保持为空时获取此值,reactjs,forms,yup,Reactjs,Forms,Yup,常量验证模式=()=>{ 返回Yup.lazy(值=>{ 返回Yup.object().shape({ 名称:Yup.string().required(“此字段为必填项”), streetAddress:Yup.string().required(“此字段为必填项”), 城市:Yup.string().required(“此字段为必填项”), 状态:Yup.string().required(“此字段为必填项”), zipCode:Yup.string().required(“此字段是必需的”

常量验证模式=()=>{

返回Yup.lazy(值=>{
返回Yup.object().shape({
名称:Yup.string().required(“此字段为必填项”),
streetAddress:Yup.string().required(“此字段为必填项”),
城市:Yup.string().required(“此字段为必填项”),
状态:Yup.string().required(“此字段为必填项”),
zipCode:Yup.string().required(“此字段是必需的”),
国家/地区:Yup.string().required(“此字段为必填项”),
电话:Yup.string().required(“此字段为必填项”),
//consultingCharge:Yup.string().required(“此字段为必填项”),
计划:Yup.array().of(
是的。对象()形状({
可用:Yup.boolean(),
计时:是的。数组()(
是的。对象()形状({
开始时间:是的
.string()
.当('可用'){
是的,
然后:Yup.string().required('Field is required'),
否则:Yup.string()
}),
结束时间:是的
.string()
.当('可用'){
是的,
然后:Yup.string().required('Field is required'),
否则:Yup.string()
})
.test(“,“结束时间必须在开始时间之后”,函数(值){
返回this.parent.startTime<值;
}),
})
)
})
)
})
})
}

面对以下错误: 计划[0]。计时[0]。结束时间必须是
字符串
类型,但最终值为:
null
。如果“null”是空值,请确保将架构标记为
.nullable()


当将开始时间和结束时间字段留空时。

我不确定这是否与模式相关,我可以想象您将其与formik或其他表单库结合使用?根据该架构进行验证的状态似乎为endTime属性提供了一个
null
值。你能确认它不是状态对象本身的问题吗?是否您的输入字段为空,并且onChange处理程序正在将状态值设置为
null
,而不是
“”
?:)

return Yup.lazy(values => {
    return Yup.object().shape({
        name: Yup.string().required("This field is required"),
        streetAddress: Yup.string().required("This field is required"),
        city: Yup.string().required("This field is required"),
        state: Yup.string().required("This field is required"),
        zipCode: Yup.string().required("This field is required"),
        country: Yup.string().required("This field is required"),
        phone: Yup.string().required("This field is required"),
        //   consultingCharge: Yup.string().required("This field is required"),
        schedules: Yup.array().of(
            Yup.object().shape({
                available: Yup.boolean(),
                timings: Yup.array().of(
                    Yup.object().shape({
                        startTime: Yup
                            .string()
                            .when('available', {
                                is: true,
                                then: Yup.string().required('Field is required'),
                                otherwise: Yup.string()
                            }),

                        endTime: Yup
                            .string()
                            .when('available', {
                                is: true,
                                then: Yup.string().required('Field is required'),
                                otherwise: Yup.string()
                            })
                            .test("",  "End time must be after Start time" ,  function(values){
                                return this.parent.startTime < values;
                            }),

                    })
                )
            })
        )
    })
})