Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tag: 不能正确删除标签 #598

Closed
gssggssg opened this issue Mar 3, 2022 · 0 comments
Closed

Tag: 不能正确删除标签 #598

gssggssg opened this issue Mar 3, 2022 · 0 comments

Comments

@gssggssg
Copy link
Contributor

gssggssg commented Mar 3, 2022

描述

标签组动态删除:只能从后往前删,从前往后逐个删除会出现删除失效情况

环境

  • uiw:4.13.4
  • 浏览器:98.0.4758.102(正式版本) (64 位)
  • 系统:windows10

复现步骤

  1. 点击删除第一个橘子,正确删除
  2. 点击删除苹果,没有效果

image

初步分析&尝试解决

  1. 打印输出可以看到
    image

发现删除苹果后,进行删除橘子onClose(data)传递的参数还是苹果

  1. 查看代码得知由于 key值是索引 index
    image

个人猜测是由于 diff 算法将新的虚拟DOM与改变前的虚拟DOM进行比较
我将 key 值相同的 数组项 进行对比,reaact删除的是最后一个数组项,并将最开始key=3橘子数据,动态赋值到key=2

分析原因

当数组删除了其中一个元素,由于数据数组长度产生变化,react运行 diff 发生了不可预计的问题

  1. key 改为不重复的 item.value ,问题不再出现
    image
gssggssg added a commit to gssggssg/uiw that referenced this issue Mar 3, 2022
jaywcjlove pushed a commit that referenced this issue Mar 3, 2022
@gssggssg gssggssg closed this as completed Mar 4, 2022
jaywcjlove added a commit that referenced this issue Mar 23, 2022
* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* docs(SearchTree): 文档整理

* doc(Tag): 修复文档示例错误 (#599)

#598 修复

* Revert "doc(Tag): 修复文档示例错误 (#599)" (#600)

* doc(Tag): 修复文档示例错误 (#599)

#598 修复

* Revert "doc(Tag): 修复文档示例错误 (#599)" (#600)

* 暂存

* clean:无效代码

* feat(Tabs): 选项卡过多,超过宽度时,收缩超出部分 #559 (#626)

* fix(SearchTree): 修复数字key为0导致无法选中问题

* fix(Drawer): 修复层级问题,Dropdown被遮挡 #620

* revert:撤销

* fix(Drawer): 修复层级问题,Dropdown被遮挡 #620

* feat(SearchTree): 操作流程优化 #629 #631

* chore(Form): Select 跟Input 在表单中使用,错误样式统一 #622 (#628)

* fix react-search-tree: remove remark

* style(Tabs): 收缩菜单优化

* clean:删除调试代码

* chore: 更改'提交问题'链接地址

* fix(SearchSelect): 修复单选模式无法显示初始lable问题 & 文档补全

* feat(SearchSelect):  和SearchTree统一操作流程

* fix(SearchSelect): 修复单选模式无法显示初始lable问题 & 文档补全

* feat(SearchSelect):  和SearchTree统一操作流程

* docs(FileInput): 补全示例文档 #642

* fix(SearchTree): 修复数字key无法被选中问题&增加示例文档

* fix(SearchTree): 修复数字key无法被选中问题&增加示例文档

* fix(Tree): 节点key为0时children无法渲染 #619

* style(Progress): 进度起始和末尾圆角溢出

* style(Progress): 进度起始和末尾圆角溢出

* fix(SearchSelect): 清空操作不再展开下拉选项&文档补全

* fix(SearchSelect): 清空操作不再展开下拉选项&文档补全

* fix(Popover): 修复children为Icon弹窗无法准确定位问题  #639

* docs(Popover): 文档格式化

* fix(SearchSelect): 修复form在没有initValue情况默认赋值了空字符串问题

* feat(Transfer): 增加双栏穿梭选择框

* 暂存

* feat(Transfer): 增加选项搜索功能

* chore: 依赖撤销

* chore:transfer组件发布

* fix(Transfer): 选项为多层tree时总数统计错误

* docs(Transfer): 文档与菜单统一名称

* docs(Steps):示例文档错误

* style(Transfer): 添加穿梭箭头边框样式

* feat(Transfer): 增加选项栏全选功能

* style:样式调整

* faeat(Transfer): 添加Tree节点多选支持

* style(Transfer): 添加选中样式

* fix(Transfer): 潜在bug

* fix(Transfer): 修复潜在BUG

* style(Tree): Tree没有子节点时展开箭头不再占位 #641

* fix(Tree): 被隐藏(hideNode)的子节点,勾选父节点时,不再选中

* fix(Transfer): 修复Map对象引用拷贝导致的BUG

* fix(SearchSelect): 样式调整 #652

* faeat(Carousel): 增加走马灯组件Carousel

* clean:删除多余包引用

* chore: 添加发布代码

* fix: 代码格式调整

* docs: 文字描述错误

* fix(SearchSelect): 修复禁用后任然可以删除问题

* feat(Carousel):滚动效果总是从左向右滚动

* docs:描述错误

* fix(Carousel): 添加ref类型

* fix(SearchTree): 修复禁用后可以删问题

* fix(FileInput): 隐藏原生input file提示文字 #700

* fix(Popover): children为Icon定位错误问题

* feat(Carousel): 增加竖向滚动功能

* upd(DateInput): 添加autoClose自动隐藏弹层API  #660

Co-authored-by: jaywcjlove <398188662@qq.com>
Co-authored-by: gssggssg <490104722@qq.com>
Co-authored-by: 小弟调调™ <kennyiseeyou@gmail.com>
Co-authored-by: 崔兰鑫 <1192065030@qq.com>
github-actions bot added a commit that referenced this issue Mar 23, 2022
* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* chore: update workflows config.

* docs(SearchTree): 文档整理

* doc(Tag): 修复文档示例错误 (#599)

#598 修复

* Revert "doc(Tag): 修复文档示例错误 (#599)" (#600)

* doc(Tag): 修复文档示例错误 (#599)

#598 修复

* Revert "doc(Tag): 修复文档示例错误 (#599)" (#600)

* 暂存

* clean:无效代码

* feat(Tabs): 选项卡过多,超过宽度时,收缩超出部分 #559 (#626)

* fix(SearchTree): 修复数字key为0导致无法选中问题

* fix(Drawer): 修复层级问题,Dropdown被遮挡 #620

* revert:撤销

* fix(Drawer): 修复层级问题,Dropdown被遮挡 #620

* feat(SearchTree): 操作流程优化 #629 #631

* chore(Form): Select 跟Input 在表单中使用,错误样式统一 #622 (#628)

* fix react-search-tree: remove remark

* style(Tabs): 收缩菜单优化

* clean:删除调试代码

* chore: 更改'提交问题'链接地址

* fix(SearchSelect): 修复单选模式无法显示初始lable问题 & 文档补全

* feat(SearchSelect):  和SearchTree统一操作流程

* fix(SearchSelect): 修复单选模式无法显示初始lable问题 & 文档补全

* feat(SearchSelect):  和SearchTree统一操作流程

* docs(FileInput): 补全示例文档 #642

* fix(SearchTree): 修复数字key无法被选中问题&增加示例文档

* fix(SearchTree): 修复数字key无法被选中问题&增加示例文档

* fix(Tree): 节点key为0时children无法渲染 #619

* style(Progress): 进度起始和末尾圆角溢出

* style(Progress): 进度起始和末尾圆角溢出

* fix(SearchSelect): 清空操作不再展开下拉选项&文档补全

* fix(SearchSelect): 清空操作不再展开下拉选项&文档补全

* fix(Popover): 修复children为Icon弹窗无法准确定位问题  #639

* docs(Popover): 文档格式化

* fix(SearchSelect): 修复form在没有initValue情况默认赋值了空字符串问题

* feat(Transfer): 增加双栏穿梭选择框

* 暂存

* feat(Transfer): 增加选项搜索功能

* chore: 依赖撤销

* chore:transfer组件发布

* fix(Transfer): 选项为多层tree时总数统计错误

* docs(Transfer): 文档与菜单统一名称

* docs(Steps):示例文档错误

* style(Transfer): 添加穿梭箭头边框样式

* feat(Transfer): 增加选项栏全选功能

* style:样式调整

* faeat(Transfer): 添加Tree节点多选支持

* style(Transfer): 添加选中样式

* fix(Transfer): 潜在bug

* fix(Transfer): 修复潜在BUG

* style(Tree): Tree没有子节点时展开箭头不再占位 #641

* fix(Tree): 被隐藏(hideNode)的子节点,勾选父节点时,不再选中

* fix(Transfer): 修复Map对象引用拷贝导致的BUG

* fix(SearchSelect): 样式调整 #652

* faeat(Carousel): 增加走马灯组件Carousel

* clean:删除多余包引用

* chore: 添加发布代码

* fix: 代码格式调整

* docs: 文字描述错误

* fix(SearchSelect): 修复禁用后任然可以删除问题

* feat(Carousel):滚动效果总是从左向右滚动

* docs:描述错误

* fix(Carousel): 添加ref类型

* fix(SearchTree): 修复禁用后可以删问题

* fix(FileInput): 隐藏原生input file提示文字 #700

* fix(Popover): children为Icon定位错误问题

* feat(Carousel): 增加竖向滚动功能

* upd(DateInput): 添加autoClose自动隐藏弹层API  #660

Co-authored-by: jaywcjlove <398188662@qq.com>
Co-authored-by: gssggssg <490104722@qq.com>
Co-authored-by: 小弟调调™ <kennyiseeyou@gmail.com>
Co-authored-by: 崔兰鑫 <1192065030@qq.com> 443f356
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant