javascript - 使用 Yup 访问必填字段
问题描述
我使用 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()
})
})
有没有办法在表单中检索这些信息?
解决方案
实际上没有“好”的方法来做到这一点,但这有效:
function isRequired(field){
return schema.fields[field]._exclusive.required || false
}
注意:schema.fields[field]._exclusive.required
如果需要或未定义,则返回 true。
推荐阅读
- java - 如何获得不重复的随机整数?
- angular - 弹出 ngboostrap 上的日期范围
- angular - 如果使用 RJXS 运算符从 http.get Angular 收到空结果,则重试查询
- python - 在数据框中相互减去行
- r - R:通过仅考虑 NA 值的位置来对矩阵行进行分组的快速方法
- python - Python:替换txt文件中的字符串,但不是每次出现
- mrtk - MRKT 将如何与 Unity XR 交互工具包一起使用?
- python - Zendesk API 搜索结果索引
- asp.net-mvc - 如何使用注入 MVC 在过滤器配置中设置动作过滤器?
- python - 在 TensorFlow2 中加载 TensorFlow1 检查点 - “函数调用堆栈:keras_scratch_graph”