问题描述
仅当传递给组件的favoritealcohol
是props.isAdult
时,我才希望验证true
字段。
Yup.object().shape({
favoritealcohol: Yup.string().when(props.isAdult,{
is: true,then: Yup.string().required(),}),name: Yup.string().required('Nazwa jest wymagana'),})
我该怎么做?
上述解决方案不起作用,因为when
将表单的“键”作为第一个参数,并且我通过了prop。
一个可行的解决方案是将prop.isAdult
映射到isAdult
表单值字段,然后我可以将'isAdult'
作为第一个参数传递给when()
函数。不过,这不是最佳解决方案。
解决方法
const favoriteAlcohol = props.isAdult ? {favoriteAlcohol: Yup.string().required()} : {}
Yup.object().shape({
...favoriteAlcohol,name: Yup.string().required('Nazwa jest wymagana'),})
如果props.isAdult = true,那么它将完成
Yup.object().shape({
favoriteAlcohol: Yup.string().required(),})
否则,它将成功
Yup.object().shape({
name: Yup.string().required('Nazwa jest wymagana'),})