antd为Tree组件标题附加操作按钮功能

简介: antd为Tree组件标题附加操作按钮功能

一、前言


使用antd的tree组件实现下面这样的模块树,点击标题请求其下列表的数据,点击标题旁边的操作图标则执行对应的增删改功能:

8befbf6a6c674e33b9e146414543c258.png

二、实现方案


1.封装一个设置树标题的方法,通过开关改变state来控制图标按钮是否可见:

e5da5483caeb42769aae6fb76b84dfe7.png

处理树数据(name、children)


  const setTree = (module_data: any) => {
    return module_data.map((item: any) => {
      let _json = { ...item };
      _json.name = setTreeTitle(item);
      _json.children = item.children ? setTree(item.children) : [];
      return _json;
    });
  };


赋值给Tree的treeData:


<Tree
      ...
        treeData={setTree(treeData)} 
        ...
        fieldNames={{ title: 'name', key: 'id', children: 'children' }}
      />


2.树标题被选中时,则调用刷新列表的方法:


onSelect={(value: any, e: any) => {
      if (e.selected) {
        treeSelectFunc(value[0]);
      }
    }}


3.但需要注意的坑是,由于我增加了删除功能,当执行删除操作后,树处于选中状态的话就会报错,因为处于选中状态就会调用刷新列表的方法,但该数据已经被我删除了,可能因此报错:


5c7564ce0c8d41cca586ca9efd68a676.png


所以我们需要创建一个state来存储当前选中的数据:


const [selectId, setSelectId] = useState<any>(null);


然后在onSelect方法中判断新选中的数据是否是当前数据,如果是则不再执行请求方法:


onSelect={(value: any, e: any) => {
  const selectValue = value[0]
  if (e.selected && selectValue !== selectId) {
    treeSelectFunc(selectValue);
    setSelectId(selectValue)
  }
}}


这样就解决了删除数据可能报错的问题。


三、总结


发这篇文章的目的是好久没发文了,活跃度掉了不少!周排名总排名一直再降,所以先水一篇稳一波。


等闲下来的时候还是要坚持写作来巩固提升自己。

目录
相关文章
|
JavaScript 索引
【vue】element ui 实现动态表单点击按钮新增行/删除行
【vue】element ui 实现动态表单点击按钮新增行/删除行
3433 0
|
2月前
|
前端开发 小程序
扩展uview复选组件库支持自定义图片+自定义内容
扩展uview复选组件库支持自定义图片+自定义内容
85 6
|
JavaScript
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
1611 0
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
|
JSON JavaScript 前端开发
vue如何获取Elementui Tree 树形控件当前选中的节点
vue如何获取Elementui Tree 树形控件当前选中的节点
148 0
|
4月前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
89 0
|
4月前
|
JavaScript API
Antd——如何给树形控件增加编辑删除
Antd——如何给树形控件增加编辑删除
217 0
|
7月前
|
移动开发 前端开发
VUE3一种用户可以设置显示隐藏列表内容的方法
VUE3一种用户可以设置显示隐藏列表内容的方法
77 0
|
7月前
antd如何隐藏Upload组件的删除和预览图标
antd如何隐藏Upload组件的删除和预览图标
387 1
|
7月前
Vue3组件库 -- element plus 树形选择器组件怎样显示已有的树形菜单?
Vue3组件库 -- element plus 树形选择器组件怎样显示已有的树形菜单?
97 0
|
JSON JavaScript 数据格式
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
Elementui Tree 树形控件,将勾选选中的值放在list集合里面提交
78 1