如何让 yup 数字接受可为空的值?
How can I make a yup number accept nullable values?
我有以下是的检查:
nrOfApples: yup.number().min(0).max(999),
现在,如果我将该字段留空,它会被验证为 false。有没有办法让 yup.number() 接受空值?我试过:
yup.number().nullable()
但是好像不行。关于如何实现这样的事情有什么想法吗?
你必须将 true
传递给 nullable -
nrOfApples: yup.number().min(0).max(999).nullable(true);
发件人:https://github.com/jquense/yup/issues/500
工作示例:https://runkit.com/xdumaine/5f2816c75a0ba5001aa312b2
请注意,如果您添加 required().nullable(true)
,则 required
会覆盖 nullable
,null 将不会生效。
更新:
您可以使用 transform
将 NaN
值转换为 null
。我用这个更新了 runkit:
const contactSchema = yup.object({
name: yup.string()
.required(),
nrOfApples: yup
.number()
.min(0)
.max(999)
.nullable(true)
// checking self-equality works for NaN, transforming it to null
.transform((_, val) => val === Number(val) ? val : null)
})
我有以下是的检查:
nrOfApples: yup.number().min(0).max(999),
现在,如果我将该字段留空,它会被验证为 false。有没有办法让 yup.number() 接受空值?我试过:
yup.number().nullable()
但是好像不行。关于如何实现这样的事情有什么想法吗?
你必须将 true
传递给 nullable -
nrOfApples: yup.number().min(0).max(999).nullable(true);
发件人:https://github.com/jquense/yup/issues/500
工作示例:https://runkit.com/xdumaine/5f2816c75a0ba5001aa312b2
请注意,如果您添加 required().nullable(true)
,则 required
会覆盖 nullable
,null 将不会生效。
更新:
您可以使用 transform
将 NaN
值转换为 null
。我用这个更新了 runkit:
const contactSchema = yup.object({
name: yup.string()
.required(),
nrOfApples: yup
.number()
.min(0)
.max(999)
.nullable(true)
// checking self-equality works for NaN, transforming it to null
.transform((_, val) => val === Number(val) ? val : null)
})