当前位置: 首页 > 面试题库 >

使用redux-form验证React中动态生成的表单并重新验证?

芮化
2023-03-14
问题内容

我正在使用“ revalidate”来验证“ redux-
form”表单,但是我面对这种情况,其中存在一个基于我在其上映射并在表单内显示输入的API响应动态生成的表单。

这是我通常如何使用“重新验证…”验证“ redux表单”的示例

const validate = combineValidators({
    name: composeValidators(
        isRequired({ message: "Please enter your full name." }),
        hasLengthLessThan(255)({
            message: "Name can't exceed 255 characters."
        })
    )(),
    email: composeValidators(
        isRequired({ message: "Please enter your e-mail address." }),
        matchesPattern(IS_EMAIL)({
            message: "Please enter a valid e-mail address."
        })
    )()
});

export default compose(
    connect(
        null,
        actions
    ),
    reduxForm({ form: "signupForm", enableReinitialize: true, validate })
)(SignUpForm);

现在,如何使用自动生成的表单执行类似的操作?


问题答案:

这个想法是让dynamicFieldsownProps它是第二个参数validate的功能,并请你来填充验证使用它们。

由于combineValidators是一个高阶函数,因此在运行它后,我们用valuesas参数调用结果函数。

// assuming dynamicFields an array like:
[
    {
        id: 1,
        name: 'age',
        component: 'input',
        label: 'Age',
        placeholder: 'Age'
    },
    {
        id: 2,
        name: 'size',
        component: 'input',
        label: 'Size',
        placeholder: 'Size'
    }
]
///////

const validate = (values, ownProps) => {
const staticValidations = {
    firstname: composeValidators(
        isRequired({ message: 'Please enter the first name.' }),
        hasLengthLessThan(255)({
            message: "Name can't exceed 255 characters."
        })
    )(),
    lastname: composeValidators(
        isRequired({ message: 'Please enter the lastname' }),
        matchesPattern('abc')({
            message: 'Please enter a valid lastname'
        })
    )()
}
const dynamicValidations = ownProps.dynamicFields.reduce((accu, curr) => {
    accu[curr.name] = isRequired({ message: 'Please enter ' + curr.name })
    return accu
}, {})

return combineValidators({
    ...staticValidations,
    ...dynamicValidations
})(values)

}

在此示例中,我只是放置,isRequired但您可以更具创造力,例如将a传递type动态字段数据并执行类似if type === ABC then do XYZ

此处提供了完整的验证代码和框->
https://codesandbox.io/embed/py5wqpjn40?fontsize=14



 类似资料:
  • 本文向大家介绍Vue+Element实现动态生成新表单并添加验证功能,包括了Vue+Element实现动态生成新表单并添加验证功能的使用技巧和注意事项,需要的朋友参考一下 首先有一个这样的需求,表单中默认有一个联系人信息,用户可以再添加新的联系人信息 点击添加更多联系人之后 官方文档中有写用v-for来实现新增表单,但是那是单表单的新增,现在多表单的新增,可以考虑的实现方法是先写死一个必须的表单,

  • 在构建Web应用程序时,验证是一个重要的过程。 它确保我们获得的数据适当且有效存储或处理。 CodeIgniter使这项任务变得非常简单。 让我们用一个简单的例子来理解这个过程。 例子 (Example) 创建一个视图文件myform.php并将以下代码保存在application/views/myform.php 。 此页面将显示用户可以提交其姓名的表单,我们将验证此页面以确保在提交时不应为空。

  • 本文向大家介绍Python中使用django form表单验证的方法,包括了Python中使用django form表单验证的方法的使用技巧和注意事项,需要的朋友参考一下 一. django form表单验证引入   有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; 前端提交后台获取: 这样就完成了基本的功能,基本上可以用了。 但是,如果用户输入并未

  • 问题: 输入内容,失去焦点,应该提示【请输入正确的身份证号码】,也就是走rules的第二条规则partner,而不是走第一条require。 示例代码如下: 在线demo: el-form表单示例 - JS Bin

  • 本文向大家介绍C ++程序生成验证码并验证用户,包括了C ++程序生成验证码并验证用户的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个生成CAPTCHA并验证用户的程序。 为此,我们将为用户提供一个随机字符串,并要求他重新输入相同的字符串。然后,必须检查给定字符串和输入字符串是否匹配。 CAPTCHA应该是由az,AZ和0-9组成的完全随机的系统。 示例 输出结果

  • 问题内容: 我正在尝试验证从后端端点给我的一些表单字段… 因此基本上,元素是在内动态创建的。因此,属性也被动态添加,如,等… 但是,由于该属性是动态添加的,因此当我尝试验证它时,例如: 它不返回任何内容,因为在这一点上,它不知道是什么。 我创建了一个jsFiddle来演示该问题:http : //jsfiddle.net/peduarte/HB7LU/1889/ 任何帮助或建议将不胜感激! FAN