问题描述
我在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。