使用Yup访问必填字段

问题描述

我在yup中使用react-hook-form来验证我的表单。

我想知道模式的所有必填字段,以表格形式显示一些信息(如必填字段为“ *”)。 我们可以通过以下代码来实现:

schema.describe().fields[field].tests.findindex(({ name }) => name === 'required'

但是,此代码不适用于条件验证。

架构示例:

const schema = yup.object().shape({
    email: yup
    .string()
    .email()
    .required(),isProfilerequired: yup
    .boolean(),profile:  yup
    .object()
    .when('isProfilerequired',{
        is: (isProfilerequired) => isProfilerequired,then:
            yup
            .object()
            .nullable()
            .required()
    })
})

有没有办法在表格中检索这些信息?

解决方法

实际上没有做到这一点的“不错”方法,但这可行:

function isRequired(field){
    return schema.fields[field]._exclusive.required || false 
}

注意:schema.fields[field]._exclusive.required如果需要或未定义,则返回true。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...