如何解决是的,条件验证
我想使用我的架构在其他字段的基础上验证一个字段。就像,如果 carType 是“SUV”,最大“noOfPassengers”应该是 6 否则 4。但是,它不能验证这种情况,我既无法调试,也无法在控制台中收到任何错误。
const validationSchema = yup.object().shape({
location: yup
.string()
.required('location is required'),destination: yup
.string()
.required('Destination is required'),carType: yup
.string(),noOfPassengers: yup
.string()
.when('carType',{
is: value => value && value === "SUV",then: yup
.string()
.max(6,'Max 6 passengers are required'),otherwise: yup
.string()
.max(4,'Max 4 passengers are required'),}),});
解决方法
您将 noOfPassengers 的值作为字符串进行比较,而它应该是这样的数字:
Yup.object().shape({
location: Yup
.string()
.required('location is required'),destination: Yup
.string()
.required('Destination is required'),carType: Yup
.string(),noOfPassengers: Yup
.number()
.when('carType',{
is: value => value && value === "SUV",then: Yup
.number()
.max(6,'Max 6 passengers are required'),otherwise: Yup
.number()
.max(4,'Max 4 passengers are required'),}),});
如果你运行这个,你应该得到验证错误。你的逻辑条件也有缺陷。你也应该解决这个问题,但这不是这个答案的范围。
问题是
Yup.string()
应该是 Yup.number()
,因为您随后在 max
中比较它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。