gpt4 book ai didi

javascript - Formik - 嵌套字段验证

转载 作者:行者123 更新时间:2023-11-30 13:50:39 25 4
gpt4 key购买 nike

我有带数字输入的嵌套字段,无法使验证正常工作。不确定这是 formik 的问题还是 yup/验证模式是如何声明的,但我会在这里开始询问。

在示例中,我有两个字段代表数字,默认为空字符串。验证适用于第一个字段,但我无法让它对嵌套字段表现相同。当我触摸该字段但未输入任何内容时,它会返回:

social.facebook must be a number type, but the final value was: NaN (cast from the value "").

示例:codesandbox

最佳答案

似乎是 formik 的问题,嵌套字段验证!当它的数字和值用空字符串初始化时,最后抛出该错误

当它是空字符串时,您可以通过将其转换为 null 来解决它,然后在 validationSchema 中将其设置为 nullable ,如下所示

validationSchema={Yup.object().shape({
email: Yup.number(),
social: Yup.object().shape({
facebook: Yup.number()
.transform((value, originalValue) => originalValue.trim() === "" ? null: value)
.nullable()
})
})}

参见 codeSandbox

为了进一步验证,如果您只想为号码添加特殊消息,请添加 .typeError("your message")

如下:

validationSchema={Yup.object().shape({
email: Yup.number().typeError("must be a number"),
social: Yup.object().shape({
facebook: Yup.number()
.typeError("must be a number")
.transform((value, originalValue) => originalValue.trim() === "" ? null: value)
.nullable()
})
})}

附言:您可以将初始值设置为 ,数字为 null 并将 .nullable() 添加到 schenma 。

关于javascript - Formik - 嵌套字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58319279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com