当前位置: 首页 > news >正文

treeSelect树组件设置父节点禁用

前言:

项目开发中需求方提了这样一个需求:下拉框数据是树形结构,但父节点禁止点选,只能点击子节点。毫无疑问,选用的是 ant design vue 组件库的 treeSelect 组件。但该组件默认每一级节点都可以进行选择,不符合需求。于是开始看API,发现 treeData 的 props 有这样一个属性:disabled ,可以控制节点是否禁用。

在这里插入图片描述

思路:

看到这里,心里就有了思路:只需要把接口返回的树形数据进行处理,在每一层的父节点上添加:disabled: true 属性即可实现父节点禁用。

难点:

和普通的数组数据不同,普通数据下面不会嵌套多层 children,而后端接口返回的树形数据,不能确定嵌套了多少层 children,所以无法正常使用 map 对数据进行遍历添加。

解决:

方法也很简单,使用 递归 即可解决。

为此,我专门封装了一个方法,方面以后使用。

代码

// 传参: treeData: 树形数据
const addKey = (treeData: any) => {
    return treeData.map((item: any) => ({
         ...item,
         disabled: item.childrenList?.length>0 ? true : false,
         childrenList: item.childrenList?addKey(item.childrenList) : []
    }))
}

效果:

实现效果如下图所示:每层的父节点都被禁用,只有最底层的子节点才可以进行选择。
在这里插入图片描述

相关文章:

  • Vue使用axios进行get请求拼接参数的两种方式
  • STM32存储器组织-STM32存储器映像-嵌入式SRAM-STM32位段-嵌入式闪存-STM32启动配置
  • session共享问题及四种解决方案-前端存储、session的复制 、session粘性、后端存储(Mysql、Redis等)
  • 算法篇-------贪心2
  • Python图像处理笔记
  • 基于51单片机的舞蹈机器人四路步进电机控制仿真
  • 8、如何使用FactoryBean向Spring容器中注册bean?
  • 知识蒸馏 | YOLOv7知识蒸馏实战篇 | 2/2*
  • MySQL纯代码复习(上)
  • [附源码]Python计算机毕业设计白果园网上水果超市
  • 【JVM】java的jvm类加载器和类加载子系统
  • 正则表达式(常用最新版)
  • NX二次开发-调内部函数SEL_set_type_filter_index_by_label设置类型过滤器例子剖析怎么查找内部函数调用内部函数
  • 李峋同款爱心代码
  • VMware 网络模式
  • ES6指北【2】—— 箭头函数
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 0x05 Python数据分析,Anaconda八斩刀
  • Apache Pulsar 2.1 重磅发布
  • css系列之关于字体的事
  • E-HPC支持多队列管理和自动伸缩
  • idea + plantuml 画流程图
  • iOS编译提示和导航提示
  • Markdown 语法简单说明
  • MySQL的数据类型
  • windows下mongoDB的环境配置
  • 闭包--闭包作用之保存(一)
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 机器学习学习笔记一
  • 简析gRPC client 连接管理
  • 三栏布局总结
  • 少走弯路,给Java 1~5 年程序员的建议
  • 小程序01:wepy框架整合iview webapp UI
  • 小试R空间处理新库sf
  • 学习HTTP相关知识笔记
  • 主流的CSS水平和垂直居中技术大全
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)nsfocus-绿盟科技笔试题目
  • .a文件和.so文件
  • .Net CF下精确的计时器
  • .Net Redis的秒杀Dome和异步执行
  • .Net中ListT 泛型转成DataTable、DataSet
  • @property括号内属性讲解
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [Android]使用Git将项目提交到GitHub
  • [BZOJ2850]巧克力王国
  • [C#C++]类CLASS
  • [c++] 自写 MyString 类
  • [C++进阶篇]STL中vector的使用