Javascript yup中的条件验证仍然验证不应验证的字段

Javascript yup中的条件验证仍然验证不应验证的字段,javascript,validation,yup,Javascript,Validation,Yup,我有一个包含子对象的复杂对象。如果设置了条件,我只想验证子对象 把这一点归结为一个超级基本的例子,假设我有一只宠物,宠物可以是狗。 当它是狗时,我想验证包含的狗属性“barkLevel”,以确保它已定义。然而,当它不是狗的时候,我对狗属性的存在没有意见,但是我想在验证中忽略它。看起来yup仍然会验证dog属性,即使我不想验证它 下面是演示该问题的代码: import*作为yup从“yup”导入; const dogSchema=yup.object().shape({ 级别:yup.number

我有一个包含子对象的复杂对象。如果设置了条件,我只想验证子对象

把这一点归结为一个超级基本的例子,假设我有一只宠物,宠物可以是狗。 当它是狗时,我想验证包含的狗属性“barkLevel”,以确保它已定义。然而,当它不是狗的时候,我对狗属性的存在没有意见,但是我想在验证中忽略它。看起来yup仍然会验证dog属性,即使我不想验证它

下面是演示该问题的代码:

import*作为yup从“yup”导入;
const dogSchema=yup.object().shape({
级别:yup.number().required()
});
const petSchema=yup.object().shape({
isDog:yup.boolean(),
dog:dogSchema.when(“isDog”{
是的,
然后:dogSchema.required()
})
});
异步函数main(){
试一试{
等待petSchema.validate({
isDog:错,
狗:{
}
});
}捕获(e){
控制台日志(e);
}
}
main();
您可以在中运行上述代码

上面的代码记录错误:“ValidationError:dog.barkLevel是必填字段”

如果
isDog
为false,我如何告诉yup忽略对所包含属性的验证