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

2023-11-02

前言

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() 等方法使用。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ant Design 常见用法与坑点总结(一) 的相关文章

随机推荐

  • GIT学习资料

    Git详解之一 Git起步 Git详解之二 Git基础 Git详解之三 Git分支 Git详解之四 服务器上的Git Git详解之五 分布式Git Git详解之六 Git工具 Git详解之七 自定义Git Git详解之八 Git与其他系统
  • C++并发编程框架Theron(5)——File reader(1)

    1 前言 在上一篇博文 我主要通过Hello world 的示例 介绍了actors frameworks messages和receivers几个构建Theron框架程序的要点 但是Hello world 实例只是一个再简单不过的单act
  • 关于android studio 出现Error:Execution failed for task ':app:preDebugAndroidTestBuild'. 的解决办法

    前段时间打开Android studio 在build过程中总会出现以下错误 Error Execution failed for task app preDebugAndroidTestBuild gt Conflict with dep
  • Windows认证原理解析基础入门

    0x01 前言简介 0x02 基本介绍 1 本地登录认证 2 网络登录认证 0x03 LM NTLM 版本优缺 0x04 LM NTLM 生成原理 1 LM Hashes 生成实例 2 NTLM Hashes 生成实例 0x05 LM NT
  • 文件读取-python与java对比

    最近开始接触python 发现python的语法真的是简单 下面是读取文件的实例对比 Java package com ztesoft oss iominterface httpServlet toIOM import java io Bu
  • 高仿钉钉和小米的日历控件,很实用

    http mp weixin qq com s cWD7ex7WVT8bzQpxFHmCyA ref myread
  • mysql sum 重复计算_mysql join sum时数据重复问题及解决方案

    当我们使用mysql的join功能从多张表中取出数据并使用sum分别对取出的数据求和时 会发现sum出来的值是不对的 往往是正确值的整数倍 为什么会出现这样的情况呢 复现 假设有两张表 user buy 和user sell 分别记录了用户
  • 基于Qt的智能车载系统嵌入式项目(正点原子IMX6ULL开发板)

    基于正点原子的IMX6ULL开发板的智能车载系统 Qt 提示 该项目借鉴了不少大佬的代码 我没有自己造轮子 代码在文章末尾 同时附上参考链接 本人其他项目链接基于linux的智能仓储项目 基于Qt的人脸识别 基于STM32的智能家居 移植人
  • Kali 2 Kali 2018更新源

    这个源指的是软件源 也就是说你用apt get install xxx安装软件时 系统下载软件的地方 一般默认为国外的链接 所以速度比较慢 需要换成国内的源 设置kali的更新源 在终端中打开sources list root kali v
  • 海康威视web插件【浏览器部分兼容& 全兼容】

    更新时间 2020年9月18日 前言 博主自从写了这篇文章到现在 有好多友友来问我问题 以及我自己也在不断的尝试开发 现在我归纳一下从17年到现在我遇到的问题和友友们遇到的问题以及一些资料总结 资料 3 0开发包 https downloa
  • Java中的File与字符流,字节流

    File File类概述和构造方法 File 他是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于FIle而言 其封装的并不是一个真正存在的文件 仅仅是一个路径名而已 它可以是存在的 也可以是不存在的 将来是要通过
  • Java 统计连续签到天数

    说明 签到功能根据业务情况的不同大致分为两种 一种是只要进入系统就会默认签到 另外一种是进入系统之后需要用户手动点击签到按钮进行签到 两种情况最大的区别就是 自动签到连续签到天数肯定至少为1天 而手动签到的情况则需要考虑断签的情况 1 自动
  • 关于list容器(链表)

    list容器基本概念 list优点 list容器的迭代器 以下代码为验证list是否为循环链表 list构造函数 list数据元素插入和删除操作 list大小操作 list赋值操作 list数据的存取 list常用操作 list容器基本概念
  • QGLViewer+VS(MSVC2013)配置

    工具 libQGLViewer 2 7 2 Visual Studio 2013 Uitimate QT5 9 1 MSVC2013 另外在VS中使用QT显示界面需要下载qt vsaddin msvc2013 2 2 0 vsix官网下载
  • STM32的HAL库开发系列 - GPIO中断/外部中断EXTI

    STM32的HAL库开发系列 GPIO中断 外部中断EXTI 中断它可以在GPIO口的电平发生变化时产生中断 从而使得STM32微控制器能够及时响应外部设备的变化 STM32的GPIO中断 外部中断EXTI可以配置为上升沿中断 下降沿中断和
  • c/c++教程 - 2.4.3 this指针作用,链式编程思想,空指针访问成员函数,const修饰成员函数,常函数,常对象

    目录 4 3 C 对象模型和this指针 4 3 1 成员变量和成员函数分开存储 4 3 2 this指针概念 非常重要 4 3 3 空指针访问成员函数 4 3 4 const修饰成员函数 相关教程 4 3 C 对象模型和this指针 4
  • C++基本数据类型

    一 数据类型 C 的数据类型有四类 基本类型 结构类型 指针类型 和空类型 void 二 部分基本数据类型说明 1 整型 1 int 整数就是没有小数点部分的数字 如2 98 100和0 在C 中提供多种整型 按示数范围分为短整数 shor
  • "Mac OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("Mac OS X"想使用系统钥匙串)...

    不知什么时候开始 每次我在运行xcode在真机上 或者archive打包的时间 都会弹出输入用户名和密码的框 搞的烦死了 解决方法 打开钥匙串访问 双击那些密钥弹出框 改变到允许所有应用程序访问此项目 输入一次密码即可 解决 不用每次输入了
  • Qt Widgets 与 QML/Qt Quick

    Qt Widgets 更老 更成熟 可以做gui界面 适合传统的桌面程序 QML Qt Quick 开发更 现代 的 UI 与高级应用 渲染效果更佳 界面更炫酷 参考 https my oschina net u 4000302 blog
  • Ant Design 常见用法与坑点总结(一)

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