我正在尝试为表单字段/选择实现一个非常基本的验证。验证模式:
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()
}),
我想做的事:如果provider.hasReserve
是true
,则只需要/验证reserveVehicle
。否则,不需要该数字。我得到以下错误:
“reserveVehicle必须是number
类型,但最终值为:NaN
(从值NaN
转换而来)”。
这是有道理的,因为,null
不是一个数字,但是当我试图告诉它它不应该被要求的时候,在我看来它不应该试图去计算它。
我是否遗漏了Yup
的任何关键概念?
5条答案
按热度按时间6bc51xsx1#
您应该使用typeError
下面是我的代码示例:
uqzxnwby2#
使用这段代码。transform((value)=〉(isNaN(value)?0:值))
tpgth1q73#
您可以用途:
这将忽略验证消息,但执行此操作时应小心。
0x6upsns4#
添加类型
when
中出错ibps3vxo5#
由于您希望在值为
NaN
时该字段仍然有效,并且它不是必填字段,因此将otherwise
更改为以下值应该可以解决此问题:otherwise: Yup.number().notRequired().nullable()
最后加上
.nullable()
是关键。