我正在尝试为表单字段/选择实现一个非常基本的验证。验证架构:
vehicleProvider: Yup.object() // This is an object which is null by default
.required('formvalidation.required.message')
.nullable(),
reserveVehicle: Yup.number().when('vehicleProvider', { // This is a number which is null by default
is: provider => provider?.hasReserve,
then: Yup.number()
.required('formvalidation.required.message')
.nullable(),
otherwise: Yup.number().notRequired()
}),
我想做的是:只需要/验证
reserveVehicle
如果 provider.hasReserve
是 true
.否则,不需要号码。我收到此错误:
"reserveVehicle must be a
number
type, but the final value was:NaN
(cast from the valueNaN
)."
这是有道理的(有点)因为,好吧
null
不是数字。但是当我试图告诉它不应该要求它时,在我看来它不应该尝试评估它。我是否错过了
Yup
的任何关键概念? ?
最佳答案
您应该使用 类型错误
这是我的代码中的一个示例:
amount: Yup.number()
.typeError('Amount must be a number')
.required("Please provide plan cost.")
.min(0, "Too little")
.max(5000, 'Very costly!')
关于reactjs - 是的。当 : "` NaN` (cast from the value `NaN` )",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58770630/