san*_*oco 16 validation reactjs yup
我正在尝试为表单字段/选择实现一个非常基本的验证。验证架构:
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()
}),
Run Code Online (Sandbox Code Playgroud)
我想要做的是:只需要/验证reserveVehicle
如果provider.hasReserve
是true
。否则,不需要号码。我收到此错误:
“reserveVehicle 必须是一种
number
类型,但最终值是:(NaN
从值中转换NaN
)。”
这是有道理的(有点)因为,null
这不是一个数字。但是当我试图告诉它不应该要求它时,在我看来它不应该尝试评估它。
我是否错过了任何关键概念Yup
?
Gau*_*rav 28
你应该使用typeError
这是我的代码中的一个示例:
amount: Yup.number()
.typeError('Amount must be a number')
.required("Please provide plan cost.")
.min(0, "Too little")
.max(5000, 'Very costly!')
Run Code Online (Sandbox Code Playgroud)
小智 21
无需使用“typeError”
yup.number()
.transform((value) => Number.isNaN(value) ? null : value )
.nullable()
.required('Required'),
Run Code Online (Sandbox Code Playgroud)
Abd*_*ali 11
使用这段代码 .transform((value) => (isNaN(value) ? 0 : value))
age: yup
.number()
.transform((value) => (isNaN(value) || value === null || value === undefined) ? 0 : value)
.required()
.label("Age"),
Run Code Online (Sandbox Code Playgroud)