You have to pass true
to nullable -
nrOfApples: yup.number().min(0).max(999).nullable(true);
From: https://github.com/jquense/yup/issues/500
Working example: https://runkit.com/xdumaine/5f2816c75a0ba5001aa312b2
Note that if you add required().nullable(true)
the required
overrides the nullable
and null will not validate.
Update:
You can use a transform
to convert the NaN
value into null
. I updated the runkit with this:
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)
})