Antd中Form详解:
1.获取Form表单值的方式:
① 使用Form.useForm()钩子(推荐方式)
const [form] = Form.useForm();const getFormValues = () => {const values = form.getFieldsValue();};<Form form={form}>...<Form.Item label={null}><Button onClick={getFormValues}>获取值</Button></Form.Item> </Form>
② 类组件中使用ref
class MyForm extends React.Component {formRef = React.createRef();getFormValues = () => {const values = this.formRef.current.getFieldsValue();};render() {return (<Form ref={this.formRef}>...<Form.Item label={null}><Button onClick={this.getFormValues}>获取值</Button></Form.Item></Form>);}
}
③ 通过onFinish回调获取
<Form onFinish={(values) => console.log(values)}>...
</Form>
2.Form.useForm和React.createRef的区别:
① 适用范围不同:
useForm是React Hook的实现,只能用于函数组件
createRef用来声明一个ref,可以在类组件中使用
② 获取表单值的方式不同:
useForm : form.getFieldsValue()
createRef : this.formRef.current.getFieldsValue()
3.Form.Item绑定两个值:
嵌套两层<Form.Item>,第一层无需绑定name属性,第二层绑定name,并设置样式display: "inline-block",让两个<Form.Item>在一行显示,如图所示
//在表单值中会得到:{orgCreditor: "123",orgCreditorShow: true}<Form.Item<FieldType> label="委托方"><Form.Item name="consignor" style={{ display: "inline-block", width: "50%"}}><Input /></Form.Item><Form.Item name="consignorShow" valuePropName="checked" style={{ display: "inline- block", width: "50%" }}><Checkbox>简称不显示在资产名称中</Checkbox></Form.Item>
</Form.Item>
4.Form.Item绑定嵌套对象:
当 name
为数组时,会按照顺序填充路径。
<Form.Item name={["debtInfo", "name"]} label="债务人全称"><Input />
</Form.Item>获取到的表单值 : debtInfo={name:"张三"}回显赋值 :
方式一 : const debtInfo={name:"张三"}form.setFieldValue("debtInfo",debtInfo)方式二 : form.setFieldValue(["debtInfo","name"],"张三")
5.Form表单校验:
①通过配置
validateMessages自定义校验信息模板:
注:<1>输入框input/textArea应该加校验时机validateTrigger="onBlur",否则每输一次校验一次;
<2>scrollToFirstError提交失败自动滚动到第一个错误字段;
//自定义校验信息模板
const validateMessages = {required: "${label}不能为空"
};<Form ... validateMessages={validateMessages}><Form.Item<FieldType> label="机构" name="tenantId" rules={[{ required: true }]}>...</Form.Item>
</Form>
②直接在<Form.Item>上定义rules校验规则:
<Form.Item<FieldType> label="机构"validateTrigger="onBlur" name="tenantId" rules={[{ required: true ,message:"机构不能为空"}]}><Input/>
</Form.Item>
6.Form常用API:
方法 | 参数/返回值 | 说明 |
---|---|---|
|
| 设置表单的值(该值将直接传入 form store 中并且重置错误信息。如果你不希望传入对象被修改,请克隆后传入)。(不会触发校验)。 |
|
| 设置表单的值(该值将直接传入 form store 中并且重置错误信息。如果你不希望传入对象被修改,请克隆后传入) |
|
| 获取一组字段名对应的值,会按照对应结构返回。默认返回现存字段值,当调用 |
|
| 获取对应字段名的值 |
|
| 校验表单并返回所有字段值(校验失败会 reject)。 |
|
| 重置字段值(默认重置所有,可指定字段名)。 |
|
| 设置一组字段状态(如错误提示: |
|
| 获取一组字段名对应的错误信息,返回为数组形式 |
|
| 检查一组字段是否被用户操作过, |
7.InputNumber常用属性:
controls : 是否显示增减按钮
precision : 数值精度,限制小数位数
max : 设置最大值(包含)
min : 设置最小值(包含),若最小值为0,则不允许输入负数
<Form.Item name="payment" label="已垫付律师费"><InputNumber controls={false} precision={2} max={200} min={0} />
</Form.Item>
8.select绑定对象:
在Select组件中添加labelInValue
属性,可以拿到选中节点的 label和value
<Form.Item<FieldType> label="选择资产包" name="packageData"><Select labelInValue options={packageList} fieldNames={{ label: "code", value: "id" }}></Select>
</Form.Item>//获取到的值是 packageData:{key: 492,label:"1122222",value:492}
9.Form.Item的valuePropName属性:
Switch、Checkbox 的 valuePropName 应该是 checked
,否则无法获取这个两个组件的值。
<Form.Item name="consignorShow" valuePropName="checked" ><Checkbox>简称不显示在资产名称中</Checkbox>
</Form.Item>
10.Cascader联级选择器的使用:
fieldNames:自定义 options 中 label,value,children 的字段
showSearch:在选择框中显示搜索框,支持模糊搜索
displayRender:选择后展示的渲染函数(不能在渲染过程中直接调用 setState,否则会报错)
import type { CascaderProps, GetProp } from "antd";
type DefaultOptionType = GetProp<CascaderProps, "options">[number];//联级选择器选项
const options = [{id: 110000,name: "北京",children: [{id: 110100,name: "北京市",children: [{children: [],id: 110101,name: "东城区"},{children: [], id: 110102, name: "西城区" }]}]}];//联级选择器模糊搜索
const filter = (inputValue: string, path: DefaultOptionType[]) =>path.some(option => (option.name as string).toLowerCase().indexOf(inputValue.toLowerCase()) > -1);const displayRender = (labels: string[]) => {// labels 就是选中的 label 数组return labels.join(" / ")
};<Form.Item name="creditorArea" label="所在地"><CascaderexpandTrigger="hover"fieldNames={{ label: "name", value: "id", children: "children" }}options={options}placeholder="请选择"showSearch={{ filter }}displayRender={displayRender}allowClear/>
</Form.Item>
相关文章:

Antd中Form详解:
1.获取Form表单值的方式: ① 使用Form.useForm()钩子(推荐方式) const [form] Form.useForm();const getFormValues () > {const values form.getFieldsValue();};<Form form{form}>...<Form.Item label{null}><Button onClick{ge…...
探索C语言中的二叉树:原理、实现与应用
一、引言 二叉树作为一种重要的数据结构,在计算机科学领域有着广泛的应用,无论是在操作系统的文件系统管理,还是在数据库的索引构建中,都能看到它的身影。在C语言中,我们可以利用指针灵活地构建和操作二叉树。接下来&…...

docker系列-DockerDesktop报错信息(Windows Hypervisor is not present)
Docker Desktop 报错信息 Docker Desktop - Windows Hypervisor is not present Docker Desktop is unable to detect a Hypervisor. Hardware assisted virtualization and data execution protection must be enabled in the BIOS.这是因为 Docker Desktop 需要启用 虚拟化技…...
03.Python 字符串中的空白字符处理
Python 字符串中的空白字符处理 什么是空白字符? 在处理字符串时,常常需要去除多余的空白字符。空白字符包括: 空格( )制表符(\t)换行符(\n)回车符(\r&#x…...

《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》
手把手教你用 Kubernetes 部署高可用 WordPress 博客 本实验通过 Kubernetes 容器编排平台,完整部署了一个高可用的 WordPress 网站架构,包含 MariaDB 数据库、WordPress 应用和 Nginx 反向代理三大核心组件。实验涵盖了从基础环境准备到最终服务暴露的…...

Ubuntu源码版comfyui的安装
Comfyui也出桌面版了,但是想让大家多个人都使用怎么办呢?也有方法,安装Linux版,启动后会生成个网页地址,打开就能用了。 1、先来看下本地安装环境配置: 系统:Ubuntu 22.04 内存:2…...
多模态RAG与LlamaIndex——1.deepresearch调研
摘要 关键点: 多模态RAG技术通过结合文本、图像、表格和视频等多种数据类型,扩展了传统RAG(检索增强生成)的功能。LlamaIndex是一个开源框架,支持多模态RAG,提供处理文本和图像的模型、嵌入和索引功能。研…...
C++ 命令模式详解
命令模式(Command Pattern)是一种行为设计模式,它将请求封装为对象,从而使你可以参数化客户端使用不同的请求、队列或日志请求,以及支持可撤销的操作。 核心概念 设计原则 命令模式遵循以下设计原则: 单…...

制作一款打飞机游戏47:跳转
编辑器的问题 我们开始为不同的敌人编写一些行为,到目前为止进展顺利,一切都很棒。但上次我们遇到了一些问题,我们发现在这个编辑器中编写代码有时有点困难,因为当你想要在某行之间插入内容时,你不得不删除一切然后重…...

本地部署ollama及deepseek(linux版)
一、安装ollama export OLLAMA_MIRROR"https://ghproxy.cn/https://github.com/ollama/ollama/releases/latest/download"curl -fsSL https://ollama.com/install.sh | sed "s|https://ollama.com/download|$OLLAMA_MIRROR|g" | shexport OLLAMA_MIRROR&q…...
Java Spring Boot项目目录规范示例
以下是一个典型的 Java Spring Boot 项目目录结构规范示例,结合了分层架构和模块化设计的最佳实践: text 复制 下载 src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ └── myapp/ │…...
针对共享内存和上述windows消息机制 在C++ 和qt之间的案例 进行详细举例说明
针对共享内存和上述windows消息机制 在C++ 和qt之间的案例 进行详细举例说明 以下是关于在 C++ 和 Qt 中使用共享内存(QSharedMemory)和 Windows 消息机制(SendMessage / PostMessage)进行跨线程或跨进程通信的详细示例。 🧩 使用 QSharedMemory 进行进程间通信(Qt 示例…...

vue H5解决安卓手机软键盘弹出,页面高度被顶起
开发中安卓机上遇到的软键盘弹出导致布局问题 直接上代码_ 在这里插入代码片 <div class"container"><div class"appContainer" :style"{height:isKeyboardOpen? Heights :inherit}"><p class"name"><!-- 绑定…...

CSS专题之自定义属性
前言 石匠敲击石头的第 12 次 CSS 自定义属性是现代 CSS 的一个强大特性,可以说是前端开发需知、必会的知识点,本篇文章就来好好梳理一下,如果哪里写的有问题欢迎指出。 什么是 CSS 自定义属性 CSS 自定义属性英文全称是 CSS Custom Proper…...
问题 | 当前计算机视觉迫切解决的问题
当前计算机视觉领域虽然在技术上取得了显著进展,但仍面临一系列关键挑战。结合最新研究与应用现状,以下是最迫切需要解决的几大问题: 1. 数据质量与多样性不足 高质量标注数据的获取:训练高效模型依赖大量精准标注的数据&#x…...

七、深入 Hive DDL:管理表、分区与洞察元数据
作者:IvanCodes 日期:2025年5月13日 专栏:Hive教程 内容导航 一、表的 DDL 操作 (非创建)二、分区的 DDL 操作三、洞察元数据:SHOW 命令的威力结语:DDL 与 SHOW,Hive 管理的双翼练习题一、选择题二、代码题…...
Qt6.x检查网络是否在线(与Qt 5.x不同)
Qt 5.x.x 要判断客户端网络是否联通,一般用如下方法: #include <QNetworkConfigurationManager>auto netWorkCheck new QNetworkConfigurationManager(); auto flag netWorkCheck->isOnline(); Qt 6.x.x 废弃了 QNetworkConfigurationManag…...

直接在Excel中用Python Matplotlib/Seaborn/Plotly......
本次分享如何利用pyxll包,实现直接在Excel中使用Python Matplotlib/Seaborn/Plotly等强大可视化工具。 pyxll配置 pyxll安装 pip install pyxll pyxll install pyxll自定义方法 例如,自定义一个计算斐波那契数的方法fib,并使用pyxll装饰器…...

React面试常问问题详解
以下是30个React面试中常见的问题及简要解析,涵盖基础概念、核心原理、性能优化、Hooks、状态管理等方面,适用于初中高级开发者准备面试时参考: 一、React 基础与核心概念 React 是什么? React 是由 Facebook 开发的用于构建用户界…...

【Java】网络编程(Socket)
网络编程 Socket 我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则使用套接字Socket来进行分离 套接字就像是传输层为应用层开的一个小口,应用程…...

思科(Cisco ASA/Firepower)、华三(H3C)、华为(Huawei USG)防火墙 的基础配置
以下是针对 思科(Cisco ASA/Firepower)、华三(H3C)、华为(Huawei USG)防火墙 的基础配置指南,涵盖 区域划分、安全策略、NAT、路由 等核心功能。配置示例基于通用场景,实际部署时需根…...
华为海思系列----昇腾张量编译器(ATC)模型转换工具----入门级使用指南(LINUX版)
由于官方SDK比较冗余且经常跨文档讲解且SDK整理的乱七八糟,对于新手来说全部看完上手成本较高,本文旨在以简短的方式介绍 CAFFE / ONNX 模型转 om 模型,并进行推理的全流程。希望能够帮助到第一次接触华为海思框架的道友们。大佬们就没必要看这种基础文章啦! 注:本…...
supabase 怎么新建项目?
在 Supabase 中新建项目主要通过官方网站的仪表盘 (Dashboard) 来完成。以下是详细步骤: 通过 Supabase 仪表盘新建项目: 注册/登录 Supabase 账户: 访问 Supabase 官网:https://supabase.com/如果你还没有账户,点击 …...

Windows环境下maven的安装与配置
1.检查JAVA_HOME环境变量 Maven是使用java开发的,所以必须知道当前系统环境中的JDK的安装目录。 搜索栏直接输入“cmd” 或者 WinR 输入cmd 在打开的终端窗口输入“echo %JAVA_HOME”,就可以看到jdk的位置了。 如果没有的话,请参考我的文章&a…...

LeetCode:513、找树左下角的值
//递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* t…...

Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组
Vxe UI vue vxe-table 实现表格数据分组功能,不是使用树结构,直接数据分组 查看官网:https://vxetable.cn gitbub:https://github.com/x-extends/vxe-table gitee:https://gitee.com/x-extends/vxe-table 代码 通过…...

如何禁止chrome自动更新
百度了一下 下面这个方法实测有效 目录 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable 3、验证是否禁止更新成功: 1、WINR 输入 services.msc 2、在Services弹窗中找到下面两个service并disable GoogleUpdater InternalService…...

阳光学院【2020下】计算机网络原理-A卷-试卷-期末考试试卷
一、单选题(共25分,每空1分) 1.ICMP协议工作在TCP/IP参考模型的 ( ) A.主机-网络 B.网络互联层 C.传输层 D.应用层 2.下列关于交换技术的说法中,错误的是 ( ) A.电路交换适用于突发式通信 B.报文交换不能满足实时通信 C.报文…...
Spring Boot 使用 OSHI 实现系统运行状态监控接口
在实际开发中,我们经常需要获取服务器的运行状态,例如:CPU 使用率、内存使用情况、磁盘状态、JVM 运行信息等,以便于运维监控和性能分析。本文将基于 Spring Boot OSHI 实现一个系统信息接口,可返回当前服务运行的详细…...
FastAPI+MongoDB+React实现查询博客详情功能
第一部分:FastAPI 和 MongoDB 后端 确保你的 FastAPI 应用已经配置好,并且 MongoDB 数据库已经运行。以下是完整的后端代码: # main.py from fastapi import FastAPI, HTTPException, Depends from motor.motor_asyncio import AsyncIOMotorClient from pydantic import B…...