如何让 yup 数字接受可为空的值?

问题描述 投票:0回答:2

我有以下检查:

nrOfApples: yup.number().min(0).max(999),

现在,如果我将该字段留空,它就会验证为 false。有什么方法可以让 yup.number() 接受空值吗?我试过了:

yup.number().nullable()

但是好像没啥作用。关于如何让这样的事情发生有什么想法吗?

javascript yup
2个回答
68
投票

你必须将

true
传递给可为空的 -

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) 
})

0
投票

这对我也有用,

validation: yup.string().nullable()
© www.soinside.com 2019 - 2024. All rights reserved.