React Ant Design 中内置、自定义表单验证的火速上手

本文主要是介绍React Ant Design 中内置、自定义表单验证的火速上手,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、常见的内置验证规则

在 React Ant Design 中,除了自定义验证规则外,还有一些常见的内置验证规则,包括:

  1. required:

    • 表示该字段是必填的。
  2. min:

    • 用于数字字段,表示最小值。
    • 用于字符串字段,表示最小长度。
  3. max:

    • 用于数字字段,表示最大值。
    • 用于字符串字段,表示最大长度。
  4. email:

    • 验证输入是否为有效的电子邮件地址。
  5. url:

    • 验证输入是否为有效的 URL。
  6. pattern:

    • 使用正则表达式验证输入。
  7. type:

    • 验证输入的数据类型,可选项有 stringnumberbooleanintegerfloat
  8. validator:

    • 使用自定义函数进行验证。可以返回 Promise 以实现异步验证。
  9. whitespace:

    • 验证输入是否只包含空白字符。
  10. len:

    • 验证字符串长度是否等于指定值。

这些内置的验证规则可以帮助您快速实现常见的表单验证需求。您可以根据实际情况,选择合适的规则并组合使用,以满足业务需求。同时,您也可以根据特殊需求,定义自定义的验证规则。

例1: 内置邮箱验证

<Form.Itemname="email"label="Email"rules={[{required: true,message: 'Please input your email!',},{type: 'email',message: 'Please enter a valid email address!',},]}
><Input />
</Form.Item>

为 email 字段添加了两个验证规则:

  1. required 规则确保该字段是必填的。
  2. email 规则验证输入是否为有效的电子邮件地址。
    如果用户输入的内容不符合电子邮件地址的格式,表单验证会失败,并显示错误消息"Please enter a valid email address!"。

例2:len 验证规则
len 规则用于验证字符串长度是否等于指定值。

<Form.Itemname="password"label="Password"rules={[{required: true,message: 'Please input your password!',},{len: 8,message: 'Password must be exactly 8 characters long!',},]}
><Input.Password />
</Form.Item>

为 password 字段添加了两个验证规则:

  1. required 规则确保该字段是必填的。
  2. len 规则验证输入的字符串长度是否等于 8。

如果用户输入的密码长度不是 8 个字符,表单验证会失败,并显示错误消息"Password must be exactly 8 characters long!"。

二、自定义表单验证步骤

  1. 使用自定义表单验证规则:
    • 在表单字段定义中使用 rules 属性指定表单验证规则。
    • 自定义验证规则可以通过 validator 属性来实现。
<Form.Itemname="myField"label="My Field"rules={[{required: true,message: 'Please input your field!',},{validator: (_, value) => {if (value > 10) {return Promise.resolve();}return Promise.reject(new Error('Value must be greater than 10!'));},},]}
><Input />
</Form.Item>
  1. 使用 Form.useForm() 自定义表单:
    • 通过 Form.useForm() 钩子创建一个自定义表单实例。
    • 将表单实例传递给表单组件的 form 属性。
const [form] = Form.useForm();return (<Form form={form} onFinish={onFinish}>{/* 表单项 */}</Form>
);
  1. 使用 validateFields 手动触发表单验证:
    • 通过 form.validateFields() 方法手动触发表单验证。
    • 可以在表单提交或其他特定事件中调用该方法。
const onFinish = async () => {try {await form.validateFields();// 表单验证通过, 执行提交逻辑} catch (errorInfo) {console.log('Failed:', errorInfo);}
};
  1. 使用 form.getFieldsValue() 获取表单数据:
    • 通过 form.getFieldsValue() 方法获取表单当前的值。
    • 在表单提交时可以使用该方法获取表单数据。
const onFinish = () => {const values = form.getFieldsValue();console.log('Received values of form:', values);
};

通过以上步骤,您可以在 React Ant Design 中实现自定义的表单验证逻辑,满足您的业务需求。同时,Ant Design 还提供了其他丰富的表单相关功能,如动态增减表单项、表单联动等,可以根据实际情况进一步探索和应用。

三、完整示例

效果
在这里插入图片描述
下面是一个使用 React Ant Design 实现自定义表单验证的完整示例代码:

import React from 'react';
import { Form, Input, Button } from 'antd';const MyForm = () => {const [form] = Form.useForm();const onFinish = async () => {try {await form.validateFields(); //验证表单const values = form.getFieldsValue(); //获取表单数据console.log('Received values of form:', values);// 提交表单逻辑} catch (errorInfo) {console.log('Failed:', errorInfo);}};return (<Form form={form} onFinish={onFinish}><Form.Itemname="username"label="Username"rules={[{required: true,message: 'Please input your username!',},{min: 3,message: 'Username must be at least 3 characters long!',},{pattern: /^[a-zA-Z0-9]+$/,message: 'Username can only contain letters and numbers!',},]}><Input /></Form.Item><Form.Itemname="password"label="Password"rules={[{required: true,message: 'Please input your password!',},{min: 8,message: 'Password must be at least 8 characters long!',},{pattern: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]+$/,message: 'Password must contain at least one uppercase letter, one lowercase letter, and one number!',},]}><Input.Password /></Form.Item><Form.Itemname="email"label="邮箱"rules={[{required: true,message: '请输入邮箱地址',},{type: 'email',message: '邮箱格式不对,请重新输入',},]}><Input /></Form.Item><Form.Item><Button type="primary" htmlType="submit">Submit</Button></Form.Item></Form>);
};export default MyForm;

在这个示例中,我们使用了 Form.useForm() 钩子创建了一个自定义的表单实例,并将其传递给表单组件的 form 属性。

对于用户名字段,我们定义了以下自定义验证规则:

  • 必填
  • 至少 3 个字符
  • 只能包含字母和数字

对于密码字段,我们定义了以下自定义验证规则:

  • 必填
  • 至少 8 个字符,最多12个字符
  • 必须包含至少一个大写字母、一个小写字母和一个数字

在表单提交时,我们使用 form.validateFields() 方法手动触发表单验证。如果验证通过,我们可以获取表单数据并执行提交逻辑。如果验证失败,我们会在控制台打印错误信息。

这个示例展示了如何在 React Ant Design 中实现自定义的表单验证逻辑。您可以根据实际需求,进一步扩展和修改这个示例代码。

这篇关于React Ant Design 中内置、自定义表单验证的火速上手的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915639

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

【 html+css 绚丽Loading 】000046 三才归元阵

前言:哈喽,大家好,今天给大家分享html+css 绚丽Loading!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏+关注哦 💕 目录 📚一、效果📚二、信息💡1.简介:💡2.外观描述:💡3.使用方式:💡4.战斗方式:💡5.提升:💡6.传说: 📚三、源代码,上代码,可以直接复制使用🎥效果🗂️目录✍️

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s

【VUE】跨域问题的概念,以及解决方法。

目录 1.跨域概念 2.解决方法 2.1 配置网络请求代理 2.2 使用@CrossOrigin 注解 2.3 通过配置文件实现跨域 2.4 添加 CorsWebFilter 来解决跨域问题 1.跨域概念 跨域问题是由于浏览器实施了同源策略,该策略要求请求的域名、协议和端口必须与提供资源的服务相同。如果不相同,则需要服务器显式地允许这种跨域请求。一般在springbo

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &