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

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码