Vue.js 动态添加要验证的规则

Vue.js 动态添加要验证的规则,vue.js,vuejs3,yup,vee-validate,Vue.js,Vuejs3,Yup,Vee Validate,使用vee validate,Vuejs的验证库,支持反应式验证模式,我正在考虑在动态字段上添加验证 我要归档的内容 我得到了一个要验证的字段的动态列表。每个字段都包含有关输入类型(字符串、布尔值、整数等)的信息,以及是否需要输入 示例: computed: { schema () { let schema = Yup.object ({ category: Yup.object ().shape ({ name:

使用vee validate,Vuejs的验证库,支持反应式验证模式,我正在考虑在动态字段上添加验证

我要归档的内容

我得到了一个要验证的字段的动态列表。每个字段都包含有关输入类型(字符串、布尔值、整数等)的信息,以及是否需要输入

示例:

computed: {
    schema () {
        let schema = Yup.object ({
            category: Yup.object ().shape ({
                name: Yup.string ().max (255).required ()
            })
        });

        this.fields.forEach((field)=>{
            console.log(field);
        })

        return schema;
    },
},
return Yup.object ({
    category: Yup.object ().shape ({
        name: Yup.string ().max (255).required (),
        fields: Yup.array ().of (
            Yup.object ().shape ({
                value: Yup.lazy (val => {
                console.log (val);
                return Yup.string ();
            })
        ),
    })
});
forEach
-循环中,您可以看到我正在记录字段。结果是:

Proxy {id: 1, name: "example_integer", placeholder: "", type: "integer", required: true, value: null}
Proxy {id: 2, name: "example_string", placeholder: "Type something", type: "string", required: false, value: null}
对于本例,架构应按两条规则展开:

example_integer: Yup.number().required(),
example_string: Yup.string().nullable()
现在我想知道我更喜欢哪种方式:

  • 我可以尝试使用forEach循环将这些规则添加到
    schema
  • 我可以尝试避免这个额外的步骤,并在初始模式声明中添加这个逻辑
  • 我很想知道你喜欢哪种方式。如果你有关于如何做到最优雅的信息,我很乐意听到

    我的第一次尝试:

    computed: {
        schema () {
            let schema = Yup.object ({
                category: Yup.object ().shape ({
                    name: Yup.string ().max (255).required ()
                })
            });
    
            this.fields.forEach((field)=>{
                console.log(field);
            })
    
            return schema;
        },
    },
    
    return Yup.object ({
        category: Yup.object ().shape ({
            name: Yup.string ().max (255).required (),
            fields: Yup.array ().of (
                Yup.object ().shape ({
                    value: Yup.lazy (val => {
                    console.log (val);
                    return Yup.string ();
                })
            ),
        })
    });
    
    但不幸的是
    console.log(val)
    只返回该对象的
    值,但在这种情况下,我需要检查
    类型
    必需的
    道具