是的验证是字符串或字符串数组
Yup validate is either String or Array of strings
我想验证一个字段是字符串还是字符串数组
这是一个 minimal failing example 恰好使用 formik 但实际上我正在使用 yup 进行服务器端验证。
{
email: yup
.mixed()
.oneOf([yup.array().of(yup.string()), yup.string()])
.nullable()
}
oneOf
仅适用于文字值。 Lazy 允许您动态提供架构,如下所示
{
email: yup.lazy(val => (Array.isArray(val) ? yup.array().of(yup.string()) : yup.string()))
}
{
email: yup.mixed()
.when('isArray', {
is: Array.isArray,
then: yup.array().of(yup.string()),
otherwise: yup.string(),
})
}
但是一组复选框可以产生一个数组,而文本输入则不能。您是否正在寻找一种解决方案来验证由分隔符分隔的电子邮件?
David Adler 的解决方案对我来说是可行的。
这是一个基于 TS 的变体:
from: Yup.lazy<string | string[]>(from => {
return Array.isArray(from)
? Yup.array()
.of(PathnameValidator.required())
.required()
: PathnameValidator.required();
}),
这个 YUP 简单验证适用于我的情况,当表单包含多个 select 字段并将该字段保持为必填字段并且至少需要一个选项才能 select。
selectOptions: array()
.min(1, "You can't leave this blank.")
.required("You can't leave this blank.")
.nullable()
我想验证一个字段是字符串还是字符串数组
这是一个 minimal failing example 恰好使用 formik 但实际上我正在使用 yup 进行服务器端验证。
{
email: yup
.mixed()
.oneOf([yup.array().of(yup.string()), yup.string()])
.nullable()
}
oneOf
仅适用于文字值。 Lazy 允许您动态提供架构,如下所示
{
email: yup.lazy(val => (Array.isArray(val) ? yup.array().of(yup.string()) : yup.string()))
}
{
email: yup.mixed()
.when('isArray', {
is: Array.isArray,
then: yup.array().of(yup.string()),
otherwise: yup.string(),
})
}
但是一组复选框可以产生一个数组,而文本输入则不能。您是否正在寻找一种解决方案来验证由分隔符分隔的电子邮件?
David Adler 的解决方案对我来说是可行的。
这是一个基于 TS 的变体:
from: Yup.lazy<string | string[]>(from => {
return Array.isArray(from)
? Yup.array()
.of(PathnameValidator.required())
.required()
: PathnameValidator.required();
}),
这个 YUP 简单验证适用于我的情况,当表单包含多个 select 字段并将该字段保持为必填字段并且至少需要一个选项才能 select。
selectOptions: array()
.min(1, "You can't leave this blank.")
.required("You can't leave this blank.")
.nullable()