javascript - 使用 Yup 进行复选框模式验证
问题描述
我正在使用 Yup 来验证我的架构,它有一个数组
- 标题
- 多个复选框,其中一个必须为真。
我一直在使用 Formik,所以这是初始值
const initialValues = {
exercises: [
{
title: "",
exerciseType: {
reps: false,
duration: false,
extraWeight: false,
},
},
],
};
接下来,这是我的验证模式 -
const exerciseSchema = yup.object().shape({
exercises: yup.array().of(
yup.object().shape({
title: yup.string().required().min(2).label("Exercise Name"),
exerciseType: yup
.object({
reps: yup.boolean(),
duration: yup.boolean(),
})
.test("validationTest", null, (exerciseType) => {
if (exerciseType.reps || exerciseType.duration) {
return true;
}
return new yup.ValidationError(
"Please select what you'd like to track for this exercise.",
exerciseType,
"exerciseType"
);
}),
})
),
});
虽然这会引发错误,但它会为数组中的所有复选框引发错误。理想情况下,它应该只在抛出错误之前检查每个练习类型对象。
任何有关如何解决此问题的提示将不胜感激,因为我已经坚持了几个小时了!
解决方案
推荐阅读
- javascript - 将上下文传递给 Sinon 存根的假函数
- javascript - 在 Alexa Skill 中使用 YouTube 音频链接
- node.js - 带有 Node.JS 和 Express 和 .ejs 的 SPA
- python - 如何解决 pycharm 中的“从 bitly_api 导入连接、BitlyError、错误”?
- java - 使用 kerberos 访问 hive jdbc 和 spark-hive
- python - 如何在单个标签 BeautifulSoup 之前添加多个标签
- excel - 无法根据用户窗体中的复选框选择添加单元格值
- angular - 错误: :0:0 中的错误,原因是:METHOD_NAME 不是函数 - 使用 Karma 和 Jasmine 进行角度单元测试
- c# - Fluent AcrylicBrush 不会在 Light、Dark、主题等之间切换。UWP
- facebook-login - Facebook 登录 - Facebook 从我的应用程序/我的应用程序用户那里收集哪些数据?