我有以下是检查:

nrOfApples: yup.number().min(0).max(999),
现在,如果我将该字段留空,它将验证为 false。有没有办法让 yup.number() 接受空值?我试过了:
yup.number().nullable()
但它似乎不起作用。关于如何让这种事情发生的任何想法?

最佳答案

您必须将 true 传递给 nullable -nrOfApples: yup.number().min(0).map(999).nullable(true);来自:https://github.com/jquense/yup/issues/500
工作示例:https://runkit.com/xdumaine/5f2816c75a0ba5001aa312b2
请注意,如果您添加 required().nullable(true)required 会覆盖 nullable 并且 null 将不会验证。
更新:
您可以使用 transformNaN 值转换为 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 === val ? val : null)
})

关于javascript - 如何让 yup 数字接受可为空的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63230481/

10-11 12:49