treeSelect树组件设置父节点禁用

news2024/9/21 1:34:23

前言:

项目开发中需求方提了这样一个需求:下拉框数据是树形结构,但父节点禁止点选,只能点击子节点。毫无疑问,选用的是 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) : []
    }))
}

效果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/21978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vagrant+VirtualBox快速搭建Linux环境

VagrantVirtualBox快速搭建Linux环境虚拟机Oracle VM VirtualBoxVMware虚拟机的选择Vagrant介绍Vagrant安装centos7虚拟机固定ip配置允许账号密码登录Xshell 连接Vagrant生成的虚拟机虚拟机 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功…

通过docker部署grafana和mysql

1. 简介2. 网络设置 - 2.1 docker网络设置 - 2.2 防火墙设置3. MySQL - 3.1 启动MySQL - 3.2 配置mysql - 3.3 创建只读用户 - 3.4 创建数据库4. Grafana - 4.1 启动Grafana - 4.2 配置数据源 - 4.3 dashboard与panel5. 参考 1. 简介 grafana是一个数据可视化程序, 可通过浏览…

python gdal geopandas basemap cartopy安装

python彻底解决Basemap cartopy geopandas 安装问题 Basemap cartopy geopandas rasterio这几个库存在一定的依赖关系,由于环境的变化 很可能哪天不知道就报错了: 版本不一致,运行也可能报错,如GDAL3.0的主要变化在于对空间参考…

13. PyQt5实现多页面切换之QTabWidget

PyQt5实现多页面切换之QTabWidget QTabWidget 类直接继承自 QWidget。该类提供了一个选项卡栏(QTabBar)和一个相应的页面区域,用于显示与每个选项卡相对应的页面。 与 QStackedLayout 布局原理相同,只有当前页面(即可见页面)是可见的,所有其他…

Flutter 动态更改应用程序启动图标

Flutter 动态更改应用程序启动图标 前言 在这篇文章中,我们将讨论如何在运行时在我们的 flutter 应用程序中动态更改多个应用程序启动器图标。 依赖包 一个用于动态更改移动平台上应用程序图标 flutter 插件。 https://pub.dev/packages/flutter_dynamic_icon 正文 …

zk客户端连接关闭服务端,查看znode(重补早期的学习记录)

前言:之前早期学习记录没有发布成功,丢在草稿里了,今天看到重新补一下。用作学习记录 启动zookeeper ./zkServer.sh start 连接客户端 ./zkCli.sh 后面不需参数,直接回车 回车后,这里有个watcher事件,已连接上localhost端口是默认端口2181 查看有什么命令可用 help 查…

C++类与动态内存分配

11.10 类与动态内存分配 通常,最好是在程序运行时(而不是编译时)确定诸如使用多少内存等问题。对于在对象中存储姓名来说,通常的C方法是,在类构造函数中使用new运算符在程序运行时分配所需的内存。为此,通常的方法是使用string类…

轻松解决VS配置OpenCV环境

一、OpenCV配置 1.下载OpenCV 点击进入下载OpenCV的官网界面 这里以Windows为例,其他同理。(可直接下载最新) 2.提取OpenCV 在这里浅说一句,为了方便环境配置文件管理,可以把所有关于环境配置的文件夹都放到一个叫e…

周杰伦在某手、腾格尔在某音同时开线上演唱会,八点开始谁流量高

周杰伦和腾格尔,都是中国华语乐坛的风云人物,两个人的江湖地位,一时之间很难分出仲伯。既然两位都是音乐界的老前辈,他们也准备开启历史之先河,两个人的线上演唱会都计划在今晚的八点开始。 虽然都是在今晚八点开启&am…

【微服务解耦之事件启动】Spring Boot 解耦之事件驱动

一、前言 简介: 在项目实际开发过程中,我们有很多这样的业务场景:一个事务中处理完一个业务逻辑后需要跟着处理另外一个业务逻辑,伪码大致如下: Service public class ProductServiceImpl {...public void saveProdu…

【FreeSwitch开发实践】外呼线路电话收不到回铃音问题的解决

✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:FreeSwitch开发实践 ✨ 专栏介绍:主要介绍博主在实际项目中使用FreeSwitch开发外呼类项目的一些经验心得,主要涉及FreeSwitch的基本安装编译、基本配置、ESL、WSS、录音、自定义模块、m…

从URL输入到页面展现到底发生什么?

从开发&运维角度方面来看,总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接:TCP 三次握手发送 HTTP 请求服务器处理请求并返回 HTTP 报文浏览器解析渲染页面断开连接:TCP 四次挥手 一、什么是URL&#xff…

[附源码]java毕业设计书店网站论文

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

如何从0到1实现一个基于bitcask的kv存储引擎

愿景 ​ 今年大部分业余时间都在nutsdb的开源贡献上,nutsdb是基于bitcask模型实现的持久化存储引擎,提供了诸如list,set等多种丰富的数据结构。近来很多小伙伴,其中也有一些我的好朋友陆陆续续加入到这个项目上来。为了帮助小伙伴…

pytorch中Dataset和Dataloader的使用

1.datasets下载数据集 root :代表着路径,表示现存或者准备存储的地方。 train :代表是否下载训练数据集,如果否的话就下载测试数据集 transform: 如果想对数据集进行什么变化,在这里进行操作 target_transform:跟上面的一样 download:如果是T…

ORB-SLAM2 ---- Tracking::CreateInitialMapMonocular函数

目录 1.函数作用 2.函数解析 2.1 调用函数解析 2.2 Tracking::CreateInitialMapMonocular函数总体思路 2.2.1 代码 2.2.2 总体思路解析 2.3 MapPoint::ComputeDistinctiveDescriptors函数解析 2.3.1 函数作用 2.3.2 代码 2.3.3 函数解析 2.4 MapPoint::UpdateNor…

idea使用谷歌翻译

项目场景: idea google翻译 问题描述 由于某些原因,现在谷歌翻译一直不能正常使用… 解决方案: 使用 pigcha 工具 设置也超级简单,每个月也就三十多块钱,可正常使用国内外网络。 电脑网络代理设置如下:…

XSS平台与cookie获取

今天继续给大家介绍渗透测试相关知识,本文主要内容是XSS平台与cookie获取。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负! 再次强调:严禁对未授权…

[附源码]SSM计算机毕业设计大学生心理咨询网站JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【ElasticSearch学习笔记】一、ES下载、安装、目录结构、root用户权限问题、kibana下载安装

下载和安装一、下载二、安装2.1 JDK的安装2.2 ElasticSearch的安装2.3 启动ES2.4 多节点启动三、Kibana的安装一、下载 以下载7.10.0为例: https://www.elastic.co/cn/downloads/elasticsearch 选择对应的操作系统,我是为了安装在CentOS上面&#xff0c…