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 实现动态表单点击按钮新增行/删除行
3456 0
|
JavaScript
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
1633 0
VUE element-ui之el-tree树形控件勾选节点指定节点自动勾选(指定节点为必选项)
|
3月前
|
前端开发 小程序
扩展uview复选组件库支持自定义图片+自定义内容
扩展uview复选组件库支持自定义图片+自定义内容
112 6
|
8月前
|
JavaScript
vue中有关表格中的表格头中添加悬浮提示的ui问题
vue中有关表格中的表格头中添加悬浮提示的ui问题
207 1
|
3月前
element组件库笔记一:element 框架中table表格复选框选中后,切换下一页之前选中复选框和数据消失的问题
这篇文章介绍了在Element UI框架中,如何解决表格组件复选框在分页时选中状态丢失的问题。
209 0
|
5月前
|
JavaScript 前端开发
Vue实现Element UI框架的自定义输入框或下拉框在输入时对列表选项进行过滤,以及右键列表选项弹出菜单进行删除
本文介绍了如何在Vue框架结合Element UI库实现自定义输入框或下拉框,在输入时对列表选项进行过滤,并支持右键点击列表选项弹出菜单进行删除的功能。
129 0
|
5月前
|
JavaScript API
Antd——如何给树形控件增加编辑删除
Antd——如何给树形控件增加编辑删除
249 0
|
8月前
|
移动开发 前端开发
VUE3一种用户可以设置显示隐藏列表内容的方法
VUE3一种用户可以设置显示隐藏列表内容的方法
88 0
|
JavaScript
Vue实现以按钮弹框动态控制Table列展示
点击设置弹出列数,并根据选择列进行展示:
208 0
|
8月前
Vue3组件库 -- element plus 树形选择器组件怎样显示已有的树形菜单?
Vue3组件库 -- element plus 树形选择器组件怎样显示已有的树形菜单?
114 0