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

fix-修复Tag文档组件问题 #599

Merged
merged 1 commit into from Mar 3, 2022
Merged

Conversation

gssggssg
Copy link
Contributor

@gssggssg gssggssg commented Mar 3, 2022

#598 修复

@jaywcjlove jaywcjlove merged commit 0e54fd9 into uiwjs:master Mar 3, 2022
@@ -186,7 +186,7 @@ class Demo extends React.Component {
{dataTags.map((item, idx) => {
return (
<Tag
key={idx}
key={item.value}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gssggssg 使用 value 会出问题的吧, value 如果相同就出警告了

@nullptr-z
Copy link
Collaborator

@gssggssg 相关修复在:

该是因为:Tag组件内部使用useMemo返回组件渲染,但是没有在合适的时候进行刷新,所以onClose回调的参数都是闭包创建时的副本


该issue中提交到解决方案,使用item.value可以解决,但是任然存在问题

  1. item.value可能重复;
  2. item.value解决了刷新问题是因为,demo中使用的是class组件onClose使用了this这个指针调用setState刷新dataTags, 避开了闭包问题,如果demo使用function组件问题还是存在的
onClose(data) {
    const dataTags = this.state.dataTags.filter(item => item.value !== data.value);
    this.setState({ dataTags });
  }

相关问题已经在最新版中修复,可以使用v4.13.4以前对版本function组件版本的demo进行测试

import React from 'react';
import ReactDOM from 'react-dom';
import { Tag, Button, Icon } from 'uiw';

let num = 3;
function Demo() {
  const [dataTags, dataTagSet] = React.useState([
    { label: '橘子', value: 1, color: '#28a745' },
    { label: '苹果', value: 2, color: '#F95C2B' },
    { label: '橘子', value: 3, color: '#008EF0' },
  ])

  const onClose = (data) => {
    const dataTagTemp = dataTags.filter(item => item.value !== data.value);
    dataTagSet(dataTagTemp);
  }
  const addTag = () => {
    num += 1;
    dataTags.push({
      label: `橘子${num}`, value: num, color: '#28a745'
    });
    dataTagSet(dataTags);
  }

  return (
    <div>
      {dataTags.map((item, idx) => {
        console.log(item, idx)
        return (
          <Tag
            key={item.value}
            closable
            onClose={() => onClose(item)}
            // visible={this.state.visible}
            color={item.color}>
            {item.label}
          </Tag>
        )
      })}
      <Button style={{ marginLeft: 5, minHeight: 20, padding: 0 }} size="small" onClick={addTag}> <Icon type="plus" /> </Button>
    </div>
  );
}
ReactDOM.render(<Demo />, _mount_);

jaywcjlove added a commit that referenced this pull request 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 pull request 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

Successfully merging this pull request may close these issues.

None yet

3 participants