Spo*_*y30 6 javascript reactjs yup react-hook-form
我使用react-hook-form 和 yup 来验证我的表单。
我想知道模式的所有必填字段以在表单中显示一些信息(例如必填字段的“*”)。我们可以用这行代码来实现这一点:
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()
})
})
Run Code Online (Sandbox Code Playgroud)
有没有办法在表单中检索这些信息?
小智 7
实际上没有“好”的方法来做到这一点,但这是有效的:
function isRequired(field){
return schema.fields[field]._exclusive.required || false
}
Run Code Online (Sandbox Code Playgroud)
注意:schema.fields[field]._exclusive.required如果需要或未定义,则返回 true。
测试 ExclusiveTests 而不是 _exclusive 对我有用。
const isRequired =
validationSchema?.fields[aField.name]?.exclusiveTests?.required || false;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7272 次 |
| 最近记录: |