Ant Design 常见用法与坑点总结(一)

news/2024/7/15 18:26:41 标签: javascript, 前端, react.js, Ant Design, Form 表单

前言

Ant Design 是蚂蚁出品的出色优秀的 React 组件库,相信使用 React 进行管理系统开发的小伙伴们或多或少都接触过 Ant Design。很多公司基于 React 开发的管理端系统也都是使用 Ant Design 的组件库。

因此,了解 Ant Design 的常见用法与坑点还是有必要的。

本系列文章针对 Ant Design 一些官方文档虽有提及,但是容易被忽略的,又比较重要常见的用法进行总结。同时对工作使用过程当中遇到的坑点进行归纳。

tip:文章使用的 4.x 版本的 Ant Design

Form 触发表单验证

Form.Itemrules 表单验证规则,需要调用 validateFields() 方法触发表单验证才能真正阻止不符合规则的表单的提交。

如果仅仅定义了 rules 规则,而没有调用 validateFields() 方法进行验证,即使表单没通过校验,依然可以提交。、

const handleSubmit = async () => {
    // 触发表单验证,注意该方法是异步的
    await form.validateFields();
    submitForm();
}

<Form.Item
    name="mobile"
    label="手机号码或座机"
    rules={[
        { required: true, message: "请输入手机号码或座机号码" },
        { pattern: /......../, message: "请输入正确的手机号或座机号" }
    ]}
>
        <Input placeholder="请输入手机号或座机号" />
</Form.Item>

Form 表单自定义校验规则的两种写法

自定义表单校验规则灵活度更高,可以针对一些特殊场景、特殊规则进行设置。日常工作使用概率比较大。

方式一:对象写法

<Form.Item
    name="mobile"
    label="手机号"
    rules={[
        { 
            // rule 参数是 Form.Item 的校验规则 rules
            validator: (rule, value) => {
                if(!value) {
                    return Promise.reject(new Error("请输入手机号"));
                }
                if(value.length > 11) {
                    return Promise.reject(new Error("手机号不超过11位"));
                }
                return Promise.resolve();
            }
        },
    ]}
>
        <Input placeholder="请输入手机号" />
</Form.Item>

方式二:函数写法

<Form.Item
    name="password"
    label="账户密码"
    rules={[
        ({ getFieldValue }) => ({
            validator(_, value) {
                if(!value) {
                    return Promise.reject(new Error("请输入账户密码"));
                }
                if(value === getFieldValue("password")) {
                    console.log("getFieldValue() 方法获取对应字段名的值");
                }
                return Promise.resolve();
            }
        })
    ]}
>
        <Input placeholder="请输入你的账户密码" />
</Form.Item>

相比而言,方式二的自由度更高,功能也相对更强大,因为提供了 getFieldValue() 等方法使用。

但个人认为,方式一的写法更加优雅,并且一般情况下,方式一也足够使用了,可以解决日常工作大部分自定义表单验证规则的场景。


http://www.niftyadmin.cn/n/241318.html

相关文章

tcpdump有哪些功能呢?以及如何使用呢?

tcpdump是一个命令行网络抓包工具&#xff0c;用于在 Linux/Unix 系统上捕获网络数据包。 它可以抓取传输层&#xff08;TCP、UDP&#xff09;以上的网络数据包&#xff0c;并将抓包结果以可读的方式呈现给用户。tcpdump的主要功能包括&#xff1a; 捕获网络数据包&#xff1…

1秒解决notion客户端所有问题-历史上最简单

1 前言 你是否安装了enhancer后&#xff0c;notion打不开&#xff0c;一直报错&#xff1f;你是否为实现notion客户端汉化和大纲的各种操作而各种苦恼&#xff1f;你是否不习惯使用网页的开始&#xff0c;很想有一个客户端的notion&#xff01; 全部解决&#xff01; 2 网页…

Identity标识框架配上JWT的使用

在Identity标识框架的代码上继续编写 .Net中的标识框架Identity_风的艺术的博客-CSDN博客 添加NuGet包 Nuget&#xff1a;Microsoft.AspNetCore.Authentication.JwtBearer 创建存储JWT数据类 public class JWTOptions { public string SigningKey { get; set; } pub…

JsNode算法题acm模式输入

js分为jsNode和JsV8两种输入输出方式&#xff0c;一般的执行代码还是一样的 牛客是两种都支持 华为的题目大多只支持jsNode 本文主要介绍jsNode的输入 JsNode 首先他是逐行输入的&#xff0c;就和py差不多&#xff0c;一定是每行每行地输入&#xff0c;用字符串line&#x…

Redis(05)Sorted Set类型--附有示例

文章目录 sorted setZADDZCARDZCOUNTZINCRBYZRANGEZRANKZREMZSCORE sorted set 在Redis中&#xff0c;sorted set是一种有序的数据结构&#xff0c;其中每个成员都与一个分数相关联。这个分数用于对成员进行排序&#xff0c;因此sorted set实际上是一个由成员和分数组成的“有…

瑞吉外卖项目——瑞吉外卖2

用户端登录 短信发送 短信服务介绍 目前市面上有很多第三方提供的短信服务&#xff0c;这些第三方短信服务会和各个运营商&#xff08;移动、联通、电信&#xff09;对接&#xff0c;我们只需要注册成为会员并且按照提供的开发文档进行调用就可以发送短信。 需要说明的是&a…

Linux网络服务----DNS

文章目录 一 、DNS 概念1.1 DNS的简介1.2 DNS 数据结构分布1.3 DNS 域名解析方式1.4 DNS的查询方式 二 、操作实验2.1 主dns服务器配置正向和反向解析2.2 设置从dns服务器正向和反向解析2.3 配置DHCP 一 、DNS 概念 1.1 DNS的简介 域名解析&#xff1a;是互联网的一项服务。它…

同时拿到大厂和普通程序员的offer,该如何做出选择?

今天我想和大家讨论一个普遍的职业问题&#xff0c;也是很多人都会遇到的情况。就是当你拿到多个offer时&#xff0c;如何选择最合适的那一个。特别是当你在两个公司之间犹豫不决时&#xff0c;这个问题就显得尤为重要了。 我的一个粉丝朋友&#xff0c;他是一个普通本科生&am…