formik - Formik Yup 模式中的循环依赖
问题描述
我的 formik 表单中有 5 个字段 field1...field5。我正在使用 Yup 进行架构验证。在给定时间,只有 field1、field2、field3 之一是强制性的。Field4 和 Field5 具有独立的验证,不依赖于其他字段。我想出了一种写法
schema = Yup.object().shape({
field1: Yup.string().when(['field2', 'field3'], {
is: (field2, field3) => !field2 && !field3,
then: Yup.string().required()
}),
field2: Yup.string().when(['field1', 'field3'], {
is: (field1, field3) => !field1 && !field3,
then: Yup.string().required()
}),
field3: Yup.string().when(['field1', 'field2'], {
is: (field1, field2) => !field1 && !field2,
then: Yup.string().required()
}),
field4: Yup.string().max(30, "Maximum 30 characters are allowed").required("This is a mandatory field"),
field5: Yup.string().max(30, "Maximum 30 characters are allowed").required("This is a mandatory field")
}
,[['field1', 'field2'], ['field1', 'field3'], ['field2','field3']]
)
请注意,在倒数第二行中没有提到 field4 和 field5,因为它们不依赖于其他字段。我在倒数第二行提到了 field1,field2,field3,因为没有它,架构会引发循环依赖问题。
我的问题是:field4 和 field5 在以下模式中的位置是否正确。
解决方案
推荐阅读
- javascript - 如何使用方法更改复选框的状态?
- javascript - 在Javascript中设置下拉值
- python - Python请求库无助于获取正确的网页
- php - AWS Laravel 单元测试 - 请求中包含的安全令牌无效
- logging - 如何在运行时更改apache flink的日志级别
- botframework - bot 在 Microsoft Teams 中发送自适应卡时更改通知文本?
- python - 从作为字符串的输入计算平均值
- list - 当我更改模型值时,所有模型值都会更改吗?
- azure-active-directory - 启用 MFA 时如何以非交互方式连接到 azuread 模块?
- excel - VBA 错误显示对象变量或未设置块变量错误