Reactjs Formik FieldArray验证未验证
我正在使用Formik FormArray对象,尝试使用验证似乎不起作用Reactjs Formik FieldArray验证未验证,reactjs,formik,Reactjs,Formik,我正在使用Formik FormArray对象,尝试使用验证似乎不起作用 即使使用简单的必需验证,也会允许提交空字段 当我添加正则表达式时,它会抛出错误 我不知道是否显示错误消息 很难调试 下面是我的示例表单的片段(抱歉,这不是完整的代码,而是全部在父容器中): const validationSchema=Yup.object().shape({ 域:是的。数组() .required(“required”) .匹配(/^(?):\/\/)([a-zA-Z0-9-\]+\)*[a-zA-Z0-
const validationSchema=Yup.object().shape({
域:是的。数组()
.required(“required”)
.匹配(/^(?):\/\/)([a-zA-Z0-9-\]+\)*[a-zA-Z0-9][a-zA-Z0-9-\]+\.[a-zA-Z]{2,11}?$/{
消息:“无效域”,
excludeEmptyString:正确,
})
.matches(/(www\.\124; http:\/\/\124; https:\/\/)/{
消息:“不应包含www.http:/;/;| https:/;/;”,
excludeEmptyString:正确,
})
})
常量错误消息=({name})=>(
{
const error=getIn(form.errors,name)
const touch=getIn(form.touch,name)
返回触摸和错误?错误:null
}}
/>
)
{
({handleChange,handleBlur,value,errors,toucted})=>(
领域
(
{values.domains.map((域、索引、域)=>(
-
arrayHelpers.remove(索引)}
>
x
))}
arrayHelpers.push(“”)}
>
添加域
)}
/>
我试图删除正则表达式验证,但没有成功。有人能推荐如何做吗?
谢谢
关于对象数组的formik站点示例:
const schema = Yup.object().shape({
domains: Yup.array()
.of(
Yup.object().shape({
name: Yup.string()
.min(4, 'too short')
.required('Required'), // these constraints take precedence
要访问字符串数组,请执行以下操作:
domains: Yup.array().of(
Yup.string()
.trim()
.required('Required')
我没有资格添加评论,但我在arrayHelper和Formik方面也遇到了一些问题。是否有可能域数组中最后一项的初始值未设置为和空字符串?如果对初始值执行某种类型的get,则会比较缺少最后一个值的数组在提交域[${index}]时包含在内。因此根据我的经验,它允许您提交表单,因为它没有初始值,除非您要单击输入,然后将该值设置为“”或者您选择键入的任何内容。您需要将validationSchema作为道具传递给formik,否则formik不知道它必须进行验证。检查如前所述,我没有显示全部代码,有些代码在父容器中。它仅用于其他组件,而不用于FieldArray:(iEdit?editForm(值):createItem(值))}>FieldArray存在某些问题
domains: Yup.array().of(
Yup.string()
.trim()
.required('Required')