删一个却少俩:Antd Tag 多节点同时消失的原因

作者:顺凡日期:2025/11/9

删一个却少俩:Antd Tag 多节点同时消失的原因

需求

image.png

一个表单的小需求,能填写多个福利,最多十个,福利名称允许重复,和官方的动态添加和删除示例交互一模一样,只是官方示例不支持 tag 内容重复,使用的 tag 内容作为 key

我复制丢给 AI,下掉去重,限制个数,好!满足需求了,key 值怎么办不能用重复的,拼个索引吧,最后主要代码如下,

image.png

反问一下:你觉得这会有什么问题,能达到删一个少俩的效果吗🤔???

问题

image.png

大家应该都知道用 index 作为 key,会有一些问题,对于我这个需求的影响是,点击第一个福利删除操作,实际移除的是最后一个福利的节点,我觉得在这个需求是可以接受的,在没有动画前提下也体感不到,所以我并没有改这个代码。

image.png

但是实际测试的效果的是,最后一个福利的节点没了,第一个福利节点也没了,我!!!

这啥情况,这不对呀,根据 React Diff 算法的原理吧啦吧啦...他不应该是这样然后...他咋能...

原因

image.png

开始 debug,打开控制台 command + shif + p,搜索并进入 react-dom.development.js 文件,搜索 reconcileChildrenArray 方法,打上断点

image.png

React Diff 的处理也没问题呀,被标记删除的是最后一个节点,第一个节点也被正确复用了,什么情况?难道后面的代码出了问题,我就讲断点就放到了 commitRoot 方法,先看了 root.finishedWork 发现也是正确的,后面继续执行了几下,想找出问题出在哪...就突然觉的这个福利节点是不是真没被删除,但是被隐藏掉了,我就切换到了元素控制台,还真是我去!!!这为啥多了个 ant-tag-hidden 的类

image.png

看了下 Antd Tag 代码,还真有这个设计,给被移除项加 ant-tag-hidden,加上索引 key 复用导致出现“多节点同时消失”

image.png


删一个却少俩:Antd Tag 多节点同时消失的原因》 是转载文章,点击查看原文


相关推荐


程序员副业 | 2025年10月复盘
嘟嘟MD2025/11/7

本文首发于公众号:嘟爷创业日记 。 我已经坚持日更600天+,欢迎过来追剧~ 大家好,我是嘟嘟MD,一个10年程序员,现在离职创业,有700天了,我每个月都会写一篇总结复盘,让大家可以近距离看看一个离职程序员都在干什么,今天这篇是九月份的总结,大概2000字,略长,有空的可以翻翻,希望对大家有一丢丢的借鉴作用! 一、月度大事 10月结束了,一直拖到现在才有空汇总下10月份的进度,整体来说对外的合作少了,组织内的事情多了。 1:公众号运营+B站视频运营 公众号和B站视频运营还是我的最高优先级


在 Vue3 项目中使用 el-tree
代码工人笔记2025/11/3

在 Vue3 项目中使用 el-tree 文章目录 一、基础用法1. 引入组件 二、常用功能与配置1. 节点选择(复选框 / 单选)2. 展开 / 折叠控制3. 自定义节点内容4. 搜索过滤节点5. 获取选中节点 三、动态加载节点 一、基础用法 1. 引入组件 <template> <el-tree :data="treeData" :props="defaultProps" @node-click="handleNode


SQL之表的查改(上)
啊吧怪不啊吧2025/10/31

目录 1. Retrieve 1.2 Select 1.2.1全列插入 1.2.2 use 1.2.3 指定列查询 1.2.4 select+固定值 1.2.5 列值修改查询 1.2.6 别名 1.2.7 查询结果去重 在前面的文章中我们链接了表的增删操作,今天我们来聊一下表的查找与修改操作。 1. Retrieve 首先我们要了解到Retrieve不是某一个具体的指令,它描述的是 “从数据库表中获取数据” 这一行为本身,而实现这种行为的具体技


Swift 并发编程新选择:Mutex 保护可变状态实战解析
unravel20252025/10/29

前言 Swift 5.5 带来 async/await 与 Actor 后,「用 Actor 包一层」几乎成了默认答案。 但在日常开发里,我们经常会遇到两种尴尬: 只想保护一个计数器、缓存或 token,却不得不把整段逻辑都改成异步; 把对象放到 @MainActor 后,发现后台线程也要用,结果到处是 await。 Apple 在 Swift 5.9 前后把 Mutex 正式搬进标准库(通过 Synchronization 模块),给“同步但不想异步”的场景提供了第三条路。 Mutex 是


F032 材料科学文献知识图谱可视化分析系统(四种知识图谱可视化布局) | vue + flask + echarts + d3.js 实现
B站麦麦大数据2025/10/26

文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站,有好处! 编号: F032 视频 neo4j 文献知识图谱可视化分析系统 | vue + flask + echarts + d3.js 实现 1 系统简介 系统简介:本系统是一个基于Vue+Flask构建的材料科学文献知识图谱可视化分析系统,其核心功能围绕文献数据的抓取、分析、可视化和用户管理展开。主要包括:主页模块,用于展示最新文献卡片,方便用户快速了解最新动态;文献搜索功能,支持用户通过关键词或其他条


【DeepSeek新开源】DeepSeek-OCR如何用“视觉压缩”革新长文本处理
kakaZhui2025/10/23

最近DeepSeek团队刚放出DeepSeek-OCR项目,不再将其视为一个简单的OCR(光学字符识别)工具,而是将其作为一个开创性的实验平台,旨在探索和验证一个激进的理念:我们能否利用视觉模态作为一种超高效的文本信息压缩媒介? 即,将长篇的数字文本“渲染”成一张图像,再用一个强大的视觉语言模型(VLM)从这张图像中“读”出原文。 接下来我们一起看下DeepSeek-OCR从“视觉压缩”的核心哲学,到其创新的DeepEncoder架构和多分辨率支持,再到其庞大的数据工程和训练管线。 1. 引


想偷卷?但微信不支持md文档?这个软件助你!
前端AC2025/10/22

📝 Markdown 查看器 - 现代化的文档预览工具 一个基于 React 19 + TypeScript 构建的现代化 Markdown 文档查看器,支持实时预览、语法高亮、数学公式渲染等功能。 在微信或浏览器上打开此编辑器,上传你的md文档可以上课偷偷看自己写的博客哈哈,这个是我解决微信这个没有md预览的痛点,自己用ai搞了一个小工具出来,效果还不错,还有图片可以借助图床工具:图床 - 简单、快速、免费的图床把自己图片上传到这里,就不会导致路径问题了。 项目概述 项目背景 在日常开发


告别页面呆板!这5个DOM操作技巧让你的网站活起来
良山有风来2025/10/21

你是不是经常遇到这样的情况:精心设计的页面看起来很美,但用户操作起来却毫无反应?点击按钮没反馈,表单提交没提示,页面切换生硬得像在翻纸质书? 这就像给用户端上了一盘色香味俱全的菜,结果吃起来却发现是冷的。问题就出在——你还没有掌握DOM操作的真正精髓。 今天,我就带你彻底搞懂JavaScript DOM操作,从基础到实战,让你的网页真正“活”起来。读完这篇文章,你不仅能理解DOM的工作原理,还能掌握5个让用户体验飙升的实用技巧。 什么是DOM?它为什么如此重要? 简单来说,DOM就是连接HTML


JVM 调优黄金三步法:监控→分析→验证
老K的Java兵器库2025/10/19

JVM 调优黄金三步法:监控→分析→验证 (方法论 + 案例 + 压测验证,新手也能照抄) 关键词:JVM 调优、监控、分析、验证、压测、方法论、黄金三步 阅读时长:20 min 环境:CentOS 7 + OpenJDK 8u342 + SpringBoot 1.5 + JMeter 5 适合:1~5 年 Java 开发、生产调优无思路、面试「JVM 怎么调优」标准答案 一、0 基础速记:黄金三步一句话 步骤目标一句话监控发现瓶颈先知道「哪里慢」再动手分析定位根因用数据证


Windows下Jenkins服务未自动重启问题解决
一张假钞2025/10/18

个人博客地址:Windows下Jenkins服务未自动重启问题解决 | 一张假钞的真实世界 成功安装 Jenkins 服务后,有时开机后 Jenkins 服务未自动启动。查看 Jenkins 服务安装目录下的日志发现没有服务启动的日志,所以猜测是系统启动后 Jenkins 服务未调起。 通过按 Win + R,然后输入 services.msc 并按回车来打开服务管理工具。找到 Jenkins 服务,点击右键,查看“属性”,Jenkins 默认设置如下: 为了每次开机能自动启动 Jen

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0