gpt4 book ai didi

reactjs - 有没有办法跳过对对象数组中最后一个对象的 yup 验证?

转载 作者:行者123 更新时间:2023-12-05 05:09:00 25 4
gpt4 key购买 nike

我正在使用 formik 来实现我们的表单。当您在上面的行中添加数据时,我们需要追加一行新的字段。提交表单时,我们收到 yup 验证错误,因为新添加的行不符合条件。请提出任何解决方案以跳过对新添加的行(最后一行)的验证。

This is the validation schema    

Yup.object().shape({
key1: Yup.object({
key2: Yup.object({
key3: Yup
.array()
.of(Yup.object().shape({
salary: Yup.object({
description: Yup.string().matches(/^([a-zA-Z0-9]+){0,50}$/, 'description is not valid'),
}),
})),`enter code here`
}),
}),
});

验证模式正在应用于整个对象数组,这是预期的行为。

最佳答案

您可以有两种方法。

1 - 在新字段中创建行。

您可以一个字段包含所有行,另一个字段只包含最后一行。这样,您将需要使用 setFieldValue,这样当您添加新行时,您将获得最后一行字段,推送到包含所有行的字段,然后设置新的最后一行。

这可能会做太多事情,但您可以获得一个好处,即对行中的最后一项进行自定义验证(因为它在另一个字段中)。

2 - 是的自定义验证

您可以使用 .test要验证数组,您可以遍历数组并忽略最后一个值。

您还可以在该函数内部使用 yup 模式并使用 isValidvalidate 来检查它,因此您无需自己进行测试。

编辑:

我刚刚做了一个 example您有一个字符串列表,并验证字符串的长度是否大于或等于 3。

它验证数组中的所有项目,最后一项除外。

关于reactjs - 有没有办法跳过对对象数组中最后一个对象的 yup 验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57871539/

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