如何在yup.validationSchema中添加和删除验证字段
const validationSchema = yup.object().shape({
password: yup
.string()
.label('Password')
.required()
.min(2, 'Seems a bit short...')
.max(10, 'We prefer insecure system, try a shorter password.'),
});
答案 0 :(得分:0)
要添加验证,您可以使用concat,请在此处查看文档:
https://github.com/jquense/yup#mixedconcatschema-schema
您可以定义基本验证,并在以后添加其他验证。请注意,您只是同类型的伴侣。
示例:
const requiredSchema = Yup.string().required();
const min2Schema = Yup.string().min(2, 'Seems a bit short...');
const passwordSchema = Yup.string()
.label('Password')
.max(10, 'We prefer insecure system, try a shorter password.')
.concat(requiredSchema)
.concat(min2Schema);
所有这些架构都是.string()架构。 您可以将对象与对象,字符串与字符串,数字与数字等连接起来。
要进行条件验证,您只需添加一个内联条件:
let isRequired = true;
const nameAndPasswordSchemaObject = Yup.object().shape({
name: nameSchema.concat( isRequired ? requiredSchema : null ),
password: passwordSchema,
});
yup对象也是如此:
const emailSchemaObject = Yup.object({
email: Yup.string().concat(requiredSchema)
});
const validationSchema = nameAndPasswordSchemaObject.concat(emailSchemaObject);
我希望有帮助。
关于删除模式,我在文档中什么都看不到(但从不需要)
答案 1 :(得分:0)
对于正在寻找另一种方法的人,例如依赖架构本身内部的值
import * as yup from 'yup';
export const Schema = yup
.object()
.shape({
name: yup.string().lowercase().required(),
phone: yup.number().default(0).required(),
})
.when((values, schema) => {
if (values.name === 'john') {
return schema.shape({
isHungry: yup.boolean().required(),
food: yup.string().default('Pizza'),
});
}
});