当前位置: 首页 > article >正文

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.setFieldsValue

(values: object) => void

设置表单的值(该值将直接传入 form store 中并且重置错误信息。如果你不希望传入对象被修改,请克隆后传入)。(不会触发校验)。

form.setFieldValue

(name:string,value:any ) => void

设置表单的值(该值将直接传入 form store 中并且重置错误信息。如果你不希望传入对象被修改,请克隆后传入)

form.getFieldsValue

(nameList?: string[]) => object

获取一组字段名对应的值,会按照对应结构返回。默认返回现存字段值,当调用 getFieldsValue(true) 时返回所有值

form.getFieldValue

(name: string) => any

获取对应字段名的值

form.validateFields

() => Promise<values>

校验表单并返回所有字段值(校验失败会 reject)。

form.resetFields

(fields?: string[]) => void

重置字段值(默认重置所有,可指定字段名)。

form.setFields

(fields: FieldData[]) => voidstring

设置一组字段状态(如错误提示:{ name: 'field', errors: ['报错'] })。

form.getFieldsError

(nameList?: string[]) => FieldError[]

获取一组字段名对应的错误信息,返回为数组形式

form.isFieldsTouched

(nameList?: string[],allTouched?:boolean) => boolean

检查一组字段是否被用户操作过,allTouched 为 true 时检查是否所有字段都被操作过

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()钩子&#xff08;推荐方式&#xff09; const [form] Form.useForm();const getFormValues () > {const values form.getFieldsValue();};<Form form{form}>...<Form.Item label{null}><Button onClick{ge…...

探索C语言中的二叉树:原理、实现与应用

一、引言 二叉树作为一种重要的数据结构&#xff0c;在计算机科学领域有着广泛的应用&#xff0c;无论是在操作系统的文件系统管理&#xff0c;还是在数据库的索引构建中&#xff0c;都能看到它的身影。在C语言中&#xff0c;我们可以利用指针灵活地构建和操作二叉树。接下来&…...

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 字符串中的空白字符处理 什么是空白字符&#xff1f; 在处理字符串时&#xff0c;常常需要去除多余的空白字符。空白字符包括&#xff1a; 空格&#xff08; &#xff09;制表符&#xff08;\t&#xff09;换行符&#xff08;\n&#xff09;回车符&#xff08;\r&#x…...

《基于 Kubernetes 的 WordPress 高可用部署实践:从 MariaDB 到 Nginx 反向代理》

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

Ubuntu源码版comfyui的安装

Comfyui也出桌面版了&#xff0c;但是想让大家多个人都使用怎么办呢&#xff1f;也有方法&#xff0c;安装Linux版&#xff0c;启动后会生成个网页地址&#xff0c;打开就能用了。 1、先来看下本地安装环境配置&#xff1a; 系统&#xff1a;Ubuntu 22.04 内存&#xff1a;2…...

多模态RAG与LlamaIndex——1.deepresearch调研

摘要 关键点&#xff1a; 多模态RAG技术通过结合文本、图像、表格和视频等多种数据类型&#xff0c;扩展了传统RAG&#xff08;检索增强生成&#xff09;的功能。LlamaIndex是一个开源框架&#xff0c;支持多模态RAG&#xff0c;提供处理文本和图像的模型、嵌入和索引功能。研…...

C++ 命令模式详解

命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装为对象&#xff0c;从而使你可以参数化客户端使用不同的请求、队列或日志请求&#xff0c;以及支持可撤销的操作。 核心概念 设计原则 命令模式遵循以下设计原则&#xff1a; 单…...

制作一款打飞机游戏47:跳转

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

本地部署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 项目目录结构规范示例&#xff0c;结合了分层架构和模块化设计的最佳实践&#xff1a; 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 的一个强大特性&#xff0c;可以说是前端开发需知、必会的知识点&#xff0c;本篇文章就来好好梳理一下&#xff0c;如果哪里写的有问题欢迎指出。 什么是 CSS 自定义属性 CSS 自定义属性英文全称是 CSS Custom Proper…...

问题 | 当前计算机视觉迫切解决的问题

当前计算机视觉领域虽然在技术上取得了显著进展&#xff0c;但仍面临一系列关键挑战。结合最新研究与应用现状&#xff0c;以下是最迫切需要解决的几大问题&#xff1a; 1. 数据质量与多样性不足 高质量标注数据的获取&#xff1a;训练高效模型依赖大量精准标注的数据&#x…...

七、深入 Hive DDL:管理表、分区与洞察元数据

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月13日 专栏&#xff1a;Hive教程 内容导航 一、表的 DDL 操作 (非创建)二、分区的 DDL 操作三、洞察元数据&#xff1a;SHOW 命令的威力结语&#xff1a;DDL 与 SHOW&#xff0c;Hive 管理的双翼练习题一、选择题二、代码题…...

Qt6.x检查网络是否在线(与Qt 5.x不同)

Qt 5.x.x 要判断客户端网络是否联通&#xff0c;一般用如下方法&#xff1a; #include <QNetworkConfigurationManager>auto netWorkCheck new QNetworkConfigurationManager(); auto flag netWorkCheck->isOnline(); Qt 6.x.x 废弃了 QNetworkConfigurationManag…...

直接在Excel中用Python Matplotlib/Seaborn/Plotly......

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

React面试常问问题详解

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

【Java】网络编程(Socket)

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

思科(Cisco ASA/Firepower)、华三(H3C)、华为(Huawei USG)防火墙 的基础配置

以下是针对 思科&#xff08;Cisco ASA/Firepower&#xff09;、华三&#xff08;H3C&#xff09;、华为&#xff08;Huawei USG&#xff09;防火墙 的基础配置指南&#xff0c;涵盖 区域划分、安全策略、NAT、路由 等核心功能。配置示例基于通用场景&#xff0c;实际部署时需根…...

华为海思系列----昇腾张量编译器(ATC)模型转换工具----入门级使用指南(LINUX版)

由于官方SDK比较冗余且经常跨文档讲解且SDK整理的乱七八糟,对于新手来说全部看完上手成本较高,本文旨在以简短的方式介绍 CAFFE / ONNX 模型转 om 模型,并进行推理的全流程。希望能够帮助到第一次接触华为海思框架的道友们。大佬们就没必要看这种基础文章啦! 注:本…...

supabase 怎么新建项目?

在 Supabase 中新建项目主要通过官方网站的仪表盘 (Dashboard) 来完成。以下是详细步骤&#xff1a; 通过 Supabase 仪表盘新建项目&#xff1a; 注册/登录 Supabase 账户&#xff1a; 访问 Supabase 官网&#xff1a;https://supabase.com/如果你还没有账户&#xff0c;点击 …...

Windows环境下maven的安装与配置

1.检查JAVA_HOME环境变量 Maven是使用java开发的&#xff0c;所以必须知道当前系统环境中的JDK的安装目录。 搜索栏直接输入“cmd” 或者 WinR 输入cmd 在打开的终端窗口输入“echo %JAVA_HOME”&#xff0c;就可以看到jdk的位置了。 如果没有的话&#xff0c;请参考我的文章&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 实现表格数据分组功能&#xff0c;不是使用树结构&#xff0c;直接数据分组 查看官网&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;https://gitee.com/x-extends/vxe-table 代码 通过…...

如何禁止chrome自动更新

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

阳光学院【2020下】计算机网络原理-A卷-试卷-期末考试试卷

一、单选题&#xff08;共25分&#xff0c;每空1分&#xff09; 1.ICMP协议工作在TCP/IP参考模型的 ( ) A.主机-网络 B.网络互联层 C.传输层 D.应用层 2.下列关于交换技术的说法中&#xff0c;错误的是 ( ) A.电路交换适用于突发式通信 B.报文交换不能满足实时通信 C.报文…...

Spring Boot 使用 OSHI 实现系统运行状态监控接口

在实际开发中&#xff0c;我们经常需要获取服务器的运行状态&#xff0c;例如&#xff1a;CPU 使用率、内存使用情况、磁盘状态、JVM 运行信息等&#xff0c;以便于运维监控和性能分析。本文将基于 Spring Boot OSHI 实现一个系统信息接口&#xff0c;可返回当前服务运行的详细…...

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…...