如何动态扩展或组合 Yup 模式
How to dynamically extend or compose a Yup schema
假设我有一个 Yup.string()
作为开头。
然后,在某个时候,就像在循环中一样,我想向其中添加 required
规则,有效地:
Yup.string().required('This field is required')
.
也许然后再添加一些 .email
检查。
我试过这种方法,但似乎没有用:
function validationSchemaConstructor(question) {
const schema = Yup.string();
question.validation_rules.forEach(rule => {
if ("is_required" in rule) {
schema.required("Hey man nice shot");
}
});
return schema;
}
啊我的错误 - 我需要再次分配 schema
因为链接通常通过再次返回对象来工作:
function validationSchemaConstructor(question) {
let schema = Yup.string();
question.validation_rules.forEach(rule => {
if ("is_required" in rule) {
schema = schema.required("Hey man nice shot"); // mistake here!
}
});
// un-comment to test dynamically adding additional rule
// schema = schema.email("email plesss");
return schema;
}
虽然不确定我是否应该在某处使用 clone()
。
如果有更好的方法请指教:)
假设我有一个 Yup.string()
作为开头。
然后,在某个时候,就像在循环中一样,我想向其中添加 required
规则,有效地:
Yup.string().required('This field is required')
.
也许然后再添加一些 .email
检查。
我试过这种方法,但似乎没有用:
function validationSchemaConstructor(question) {
const schema = Yup.string();
question.validation_rules.forEach(rule => {
if ("is_required" in rule) {
schema.required("Hey man nice shot");
}
});
return schema;
}
啊我的错误 - 我需要再次分配 schema
因为链接通常通过再次返回对象来工作:
function validationSchemaConstructor(question) {
let schema = Yup.string();
question.validation_rules.forEach(rule => {
if ("is_required" in rule) {
schema = schema.required("Hey man nice shot"); // mistake here!
}
});
// un-comment to test dynamically adding additional rule
// schema = schema.email("email plesss");
return schema;
}
虽然不确定我是否应该在某处使用 clone()
。
如果有更好的方法请指教:)