[英]Formik + Yup, array being converted to object and then failing validation
我有一组具有以下 Yup 模式的过滤器:
const schema = Yup.object().shape({
filters: Yup.array().strict().of(
Yup.array().strict().of(
Yup.object().shape({
// This isn't important
})
)
)
});
当我打开页面时,表单有以下数据(即formik.value
的值):
{
"filters": [
[
{
"type": "samplemeta",
"cmp": "lt",
"key": "fastqc__%GC",
"value": [
"50"
]
}
]
],
}
现在由于某种原因,验证失败并出现此错误(即formik.errors
的值):
{
"filters": [
"filters[0] must be a `array` type, but the final value was: `{\n \"0\": {\n \"type\": \"\\\"samplemeta\\\"\",\n \"cmp\": \"\\\"lt\\\"\",\n \"key\": \"\\\"fastqc__%GC\\\"\",\n \"value\": [\n \"\\\"50\\\"\"\n ]\n }\n}`."
]
}
因此,即使实际数据显然有效,我的形状为[{}]
的数组也被转换为形状为{0: {}}
的 object ,然后无法通过 Yup 验证。 当我使用<FieldArray>
组件来管理过滤器数组时,我看不到这是怎么发生的。 您可以在源代码中看到这一点,如下所示:
<FieldArray name="filters" render={outerArrayHelpers => (...)}/>
为什么会发生这种情况,我该如何避免?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.