antd Form shouldUpdate 关联展示 form 数组赋值
form 数组中嵌套数值更新
注意:数组是引用类型

项目需求,表单中包含多个产品信息,使用form.list 数组嵌套,提货方式如果是邮寄展示地址,如果是自提,需要在该条目中增加两项
代码如下:
// An highlighted block
<Card title="产品信息" bordered={false}><Form.List name="productList" >{(fields, {add, remove}) => (<>{fields.map((field,index) => (<Row gutter={16} >{/* 用得时候只需要修改下面,将需要重复展示的部分替换下面部分即可 注意 -----start*/ }<Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="库存组织"name={[field.name,"kuCun"]}rules={[{required: true,message: '请选择',},]}><Select><Select.Option value="u238475">u238475</Select.Option><Select.Option value="u238472">u238472</Select.Option></Select></Form.Item></Col><Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="产品线"name={[field.name,"chanPin"]}rules={[{required: true,message: '请输入',},]}><Select><Select.Option value="you1">CTM-产品1</Select.Option><Select.Option value="zi1">CTM-产品2</Select.Option></Select></Form.Item></Col><Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="产品名称"name={[field.name,"wuMiao"]}rules={[{required: true,message: '请输入',},]}><Input placeholder="请输入" /></Form.Item></Col><Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="提货方式"name={[field.name,"tType"]}rules={[{required: true,message: '请输入',},]}><Select><Select.Option value="you">邮寄</Select.Option><Select.Option value="zi">自提</Select.Option></Select></Form.Item></Col><Form.Item noStyle shouldUpdate={(pre,cur) => {// 如果删除一条信息,cur.productList[index]是空值,所以需要判断if(cur.productList[index]&&pre.productList[index]){// 判断当前是自提还是邮寄return pre.productList[index].tType !== cur.productList[index].tType}else{return false}}}>{({getFieldValue}) =>{const type = getFieldValue('productList'){/* 当前是自提的时候需要填写自提人信息 */}if(type[index].tType&&type[index].tType=='zi'){return <><Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="自提人姓名"name={[field.name,"tName"]}rules={[{required: true,message: '请输入',},]}><Input placeholder="请输入" /></Form.Item></Col><Col sm={24} md={12} lg={8} xxl={6}><Form.Item {...field}label="身份证号"name={[field.name,"tShen"]}rules={[{required: true,message: '请输入',},]}><Input placeholder="请输入" /></Form.Item></Col></>}else{{/* 有一个问题,当切换回邮寄。之前填写的自提人和身份证号删除(只需要将type数组中的数据清空即可,不需要再特意给form赋值,他们是引用类型) */}Object.assign(type[index],{tName:'',tShen:''})return <></>}}}</Form.Item>{ /* 用得时候只需要修改下面,将需要重复展示的部分替换下面部分即可 -----end*/ }<div styleName="item_btn_wrap"><PlusCircleFilled styleName="add_item_btn" onClick={() => add({tType:'zi'})} />{fields.length>1&&<CloseCircleFilled styleName="remove_item_btn" onClick={() => remove(field.name)} />}</div></Row>))}</>)}</Form.List></Card>
**关键点解释**1. shouldUpdate 是依赖当前form中的变化。所以在其中加上判断,pre是之前 cur是当前,然后根据数组嵌套找到当前值变化就返回true,就会走下面的代码2. Form.Item noStyle 是没有样式的,不需要添加{...field} 不是其中一项3. getFieldValue 获取当前的form值,根据值来展示
问题 在切换不展示时,之前填写的值不清空,所以重点来了
数组是引用类型
数组是引用类型
数组是引用类型
之前一直解决不了,还想用setFomValue来解决,根本不用,因为数组是引用类型,所以直接操作原来的数组值就可以
// An highlighted block
Object.assign(type[index],{tName:'',tShen:''})
相关文章:
antd Form shouldUpdate 关联展示 form 数组赋值
form 数组中嵌套数值更新 注意:数组是引用类型 项目需求,表单中包含多个产品信息,使用form.list 数组嵌套,提货方式如果是邮寄展示地址,如果是自提,需要在该条目中增加两项 代码如下:// An hi…...
vue实现一个简单导航栏
Vue之简单导航栏 在vue中,想要实现导航栏的功能,除了用传统的a标签以外,还可以使用路由——vue-router来实现,前端小白在此记录一下学习过程(默认已经搭建好vue的脚手架环境): 建立项目并安装…...
每日leetcode_LCP01猜数字
每日leetcode_LCP01猜数字 记录自己的成长,加油。 题目出处:LCP 01. 猜数字 - 力扣(LeetCode) 题目 解题 class Solution {public int game(int[] guess, int[] answer) {int count 0;for (int i 0 ; i< guess.length; i){…...
接口自动化测试_L1
目录: 接口自动化测试框架介绍 接口测试场景自动化测试场景接口测试在分层测试中的位置接口自动化测试与 Web/App 自动化测试对比接口自动化测试与 Web/App 自动化测试对比接口测试工具类型为什么推荐 RequestsRequests 优势Requests 环境准备接口请求方法接口请求…...
Windows提权
1. MySQL提权 1.1 UDF提权 udf ‘user defined function’,即’用户自定义函数’。是通过添加新函数,对MYSQL的功能进行扩充 1、如何获得udf文件 2、将文件放到哪才能让mysql承认这个函数 3、函数功能 4、为什么这东西能提权(自定义函数指令是直接…...
香港服务器的优势?
香港服务器作为近年来国内站长建站使用最为频繁的服务器之一,香港服务器是不需要备案的,而且相对于众多国内服务器 来说,的确是有诸多优势,下面就来具体说下选择香港服务器的优势: 1、访问速度快 搭建网站,…...
关于开展2023年度光明科学城出站博士后生活资助申报工作的通知
各相关单位: 根据《光明区关于实施光明科学城“人才高地计划”的若干措施》(深光发〔2022〕1号)和《光明科学城青年科技人才培育专项行动方案》(深光人才〔2022〕2号)有关规定,现就2023年度光明科学城出站博…...
“.NET视频总结:认识框架的结构和组件,掌握开发工具的奥妙“
目录 第一单元:二十一世纪程序执行 背景: 总结: 第二单元:对象导向与类别设计 背景: 总结: 第三单元:使用类别与基底类别库 背景: 总结: 第四单元:Windows开发程序 背景: 总结: 第五单元:防护式程序设计 背景: 总结…...
STM32 CubeMX PWM三种模式(互补,死区互补,普通)(HAL库)
STM32 CubeMX PWM两种模式(HAL库) STM32 CubeMX STM32 CubeMX PWM两种模式(HAL库)一、互补对称输出STM32 CubeMX设置代码部分 二、带死区互补模式STM32 CubeMX设置代码 三、普通模式STM32 CubeMX设置代码部分 总结 一、互补对称输…...
Linux系统导入导出docker容器的sql数据
Linux系统导入导出docker容器的sql数据 一 要从Docker容器中将数据库导出到本地 确保您已经安装了Docker,并且已经运行了包含数据库的Docker容器。 检查容器中运行的数据库服务的名称或容器ID。您可以使用命令 docker ps 来列出正在运行的容器和相关信息。 使用…...
SpringBoot之使用Redis和注解实现接口幂等性
文章目录 1 接口幂等性1.1 概念1.2 实现思路1.3 代码实现1.3.1 pom1.3.2 JedisUtil1.3.3 自定义注解ApiIdempotent1.3.4 ApiIdempotentInterceptor拦截器1.3.5 TokenServiceImpl1.3.6 TestApplication 1.4 测试验证1.4.1 获取token的控制器TokenController1.4.2 TestController…...
《3D 数学基础》几何检测-相交性检测
目录 1. 2D直线相交 2. 3D射线相交点 3. 射线和平面的交点 4. 3个平面的交点 5. 射线和圆或者球交点 6. 两个圆或者球是否相交 7. 球和平面的相交性检测 8. 射线和AABB的相交性(13.17) 9. 射线和三角形的相交性(13.16) …...
文字与视频结合效果
效果展示 CSS 知识点 mix-blend-mode 属性的运用 实现整体页面布局 <section class"sec"><video autoplay muted loop><source src"./video.mp4" type"video/mp4" /></video><h2>Run</h2><!-- 用于切…...
大数据Doris(九):配置BE步骤
文章目录 配置BE步骤 一、配置be节点...
BuyVM 纽约 VPS 测评
description: 发布于 2023-07-05 BuyVM 纽约 VPS 测评 产品链接:https://my.frantech.ca/cart.php?gid38 G口不限流量,抗一般投诉,不抗版权投诉。 CPU很快,硬盘不错。 无大陆优化,但大陆连通性很不错,…...
H3C交换机的40G堆叠线 ,可以插在普通光口做堆叠吗?
环境: S6520X-24ST-SI交换机 H3C LSWM1QSTK2万兆40G堆叠线QSFP 问题描述: H3C交换机的40G堆叠线 ,可以插在普通光口做堆叠吗? 解答: 1.H3C交换机的40G堆叠线通常是用于连接堆叠模块或堆叠端口的。这些堆叠线通常使…...
【Java 进阶篇】JavaScript三元运算符详解
JavaScript是一门广泛用于前端和后端开发的编程语言,具备强大的表达式和运算符。本篇博客将重点介绍JavaScript中的三元运算符,解释其语法、用法和示例。如果您是JavaScript初学者,或者希望更深入了解这门语言的运算符,那么这篇博…...
MySQL数据库技术笔记(4)
关系型数据库需要使用设计范式: 第一范式:遵从原子性,属性不可再分,数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值。 例如:需要创建一张地址表,存储地址信息。将地址信息划…...
批量图片转文字识别OCR身份证件信息提取软件
现在的OCR软件很多,有在线的也有本地的,单识别文字功能还行,不过能批量识别的好像不多,网上搜了几个都不怎么好用。尤其是识别身份证件之类的软件,并且还能提取出识别到的信息,比如姓名 名族地址等等更少。…...
Mac/Wins Matlab如何查看APPs源码
查看Apps方法一样,点击HOME-preferences-MATLAB-Apps查看你的Apps安装路径。 你的Apps文件就安装在该目录下,直接进入这个目录就可以看到你自己写的APPs文件,...
10天掌握Python编程(附20节实战视频),网盘资源速领
1. 为什么选择Python作为编程入门首选? 如果你正在寻找一门适合零基础学习的编程语言,Python绝对是你的不二之选。作为一门解释型高级语言,Python以其简洁优雅的语法和强大丰富的生态圈闻名。我十年前刚开始接触编程时,就是从Pyth…...
3步解锁抖音无水印下载神器:让内容备份效率提升10倍的完整指南
3步解锁抖音无水印下载神器:让内容备份效率提升10倍的完整指南 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,抖音已成为知识传播、文化交流和创意展示的重要平…...
重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率
重构macOS开发流程:OpenInTerminal如何提升开发者环境切换效率 【免费下载链接】OpenInTerminal ✨ Finder Toolbar app for macOS to open the current directory in Terminal, iTerm, Hyper or Alacritty. 项目地址: https://gitcode.com/gh_mirrors/op/OpenInT…...
OpenClaw+Qwen3.5-4B-Claude镜像:30分钟搭建逻辑推理自动化工作流
OpenClawQwen3.5-4B-Claude镜像:30分钟搭建逻辑推理自动化工作流 1. 为什么需要逻辑推理自动化 上周我遇到一个典型的技术问题:需要从200多行Python日志中找出导致接口超时的根本原因。手动排查不仅耗时,还容易遗漏关键线索。这让我开始思考…...
(论文速读)HyperFusion-DEIM:遥感影像中多路径关注与尺度感知融合的精确物体检测
论文题目:遥感影像中多路径关注与尺度感知融合的精确物体检测(Multi path attention and scale aware fusion for accurate object detection in remote sensing imagery)期刊:Scientific Reports摘要:在遥感图像中追求…...
从 99.8% 到 14.9%:Paperxie AI 降重,让论文 AIGC 焦虑彻底成为过去式
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/weight?type1https://www.paperxie.cn/weight?type1 一、写在前面:被 AIGC 检测支配的论文焦虑,终于有解了 当知网、维普等平台全面升级 AIGC 检测…...
MAX30102传感器寄存器深度解析与实战配置指南
1. MAX30102传感器核心功能解析 MAX30102是一款集成了红光和红外光LED的光学传感器,专门用于非侵入式心率监测和血氧饱和度(SpO2)测量。这个火柴盒大小的芯片内部藏着精密的模拟前端和数字信号处理单元,能够捕捉到人体脉搏带来的微弱光信号变化。 我第一…...
OpenClaw自动化测试实践:GLM-4.7-Flash驱动脚本执行与结果分析
OpenClaw自动化测试实践:GLM-4.7-Flash驱动脚本执行与结果分析 1. 为什么选择OpenClaw做测试自动化? 上个月接手一个新项目时,我遇到了一个典型的技术矛盾:作为独立开发者,既需要保证代码质量,又没精力手…...
【图灵完备(Turing Complete)】五、从逻辑门到LEG:指令集与条件跳转的构建
1. 从逻辑门到处理器:LEG架构的诞生之路 记得我第一次用面包板搭建简单逻辑电路时,连个LED灯闪烁都要折腾半天。而现在我们要做的,是把这些基础逻辑门像乐高积木一样拼接成真正的处理器核心。LEG架构的设计初衷就是要解决原始图灵机指令宽度受…...
C# WebSocket实战:5分钟搞定实时聊天应用(附完整源码)
C# WebSocket实战:5分钟构建高可靠实时聊天系统 实时通信已成为现代应用的核心需求之一。想象一下,当用户发送消息时,对方能立即看到;当股票价格波动时,交易界面实时更新;当多人协作编辑文档时,…...
