【前端】ant design中树形控件的父子节点受控实现

2023-11-01

前言:

1.ant design的树形控件里面先设置好checkStrictly属性,即checkable 状态下节点选择完全受控(父子节点选中状态不再关联),这样的话,onCheck函数中的checkedKeys参数打印出来它是一个有chekcedhalfChecked属性的对象,并且父子节点的选中与否不再关联;

onCheck=(checkedKeys,event)=>{
   console.log(checkedKeys,event)
}
// 打印的第一个是{checked:[],halfChecked:[]}
// evet.node.props.dataRef打印出来就是点击的节点的相关信息

// 目录树的数据结构如下
[
   {
    menuId:'1222',// 节点id
    menuName:'xxx',// 节点显示的名字
    pMenuId:'-1',// 父节点的id,没有父节点就为-1
    hasChild:true,// 是否有孩子节点
    authority:true,// 是否是选中状态
    children:[
     {
       menuId:'1452',
       menuName:'xxx',
       pMenuId:'1222',
       hasChild:false,
       authority:false
     }
    ]
   },
   ...
]

2.checked是一个数组,里面存放所有选中的树节点,halfChecked也是一个数组,里面存放的是关联子节点的父节点

需求:

1.点击父节点,对子节点没有影响,而取消父节点的选中状态,其所有的孩子节点都取消选中(checked:false),且提交的时候如果父节点是选中状态,必有一个孩子节点是选中状态(如果第一个孩子还有孩子,那么孩子的孩子也必须有一个选中状态,以此类推。。。)否则的话会弹出提示框;

2.点击子节点,如果其父节点下只有这一个子节点是选中状态,那么父节点也变为选中状态;取消选中子节点,同理如果其父节点下没有子节点是选中状态,父节点也取消选中状态。

实现:

1.在渲染TreeNode的时候传入一个path值,可以用来追根溯源,找到祖辈的节点id;

2.需要设置一个名为checkedNodes的state值,是一个对象形式,在初始化的时候需要遍历所有选中状态的节点,设置成如下形式:

{父节点1:[子节点1,子节点2,...],父节点2:[子节点1,子节点2,...]}

/**
   * 用来处理菜单授权的目录树默认选中的节点
   * 因为函数里面涉及到递归操作所以必须要在函数外定义初始变量
   * @param checkedKeys 存放选中状态的节
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【前端】ant design中树形控件的父子节点受控实现 的相关文章

随机推荐

  • 可穿戴设备未来市场巨大

    可穿戴设备将冲击智能手机的存在 不可否认 可穿戴设备未来的市场非常之大 甚至极有可能冲击智能手机的存在 从功能角度讲 可穿戴设备有机会一步步替代智能手机 现阶段来讲 许多可穿戴设备只能算是手机的附庸产品 通讯 社交等功能以手机为基础 可穿戴
  • STM32定时器(输入捕获)

    上一章讲了输出比较的内容 输出比较就是定时器自增 同时和CCR比较 按照自己设置的比较要求 输出REF高低电平 这一章我们讲下面结构图输出比较左边部分 也就是输入捕获 首先 介绍一下输入捕获 IC input capture 输入捕获 输入
  • Vuforia SDK分析

    Vuforia Architecture 高通组件 camera 单实例 在需要摄像头的时候会返回唯一的摄像头实例 Image Converter 单实例 像素级的图像转换器 在相机的 OpenGL ES rendering 格式和 tra
  • Android中保存当前按钮的状态 按back键返回之后再次进入没有改变

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 一 使用SharedPreferences类 把用户操作记录保存到里面 因为是按钮的状态 所以在点击事件里面保存用户的操作数据 获取用户
  • 哨向 Mika & Lelush 1

    Report On Sentinels Guides of Atypical Combinations 非典型性哨兵向导结合报告 1 你是我的灯塔
  • HTML5 地理定位 【来自百度应用分享平台】

    百度给的地图API接口相当完善 复制过来一下 以后备用 基本使用方法
  • Day2:跨站脚本攻击

    目标 持续输出 每日分享关于web前端常见知识 面试题 性能优化 新技术等方面的内容 篇幅不会过长 方便理解和记忆 主要面向群体 前端开发工程师 初 中 高级 应届 转行 培训等同学 Day2 今日话题 想必大家经常会在面试中或者工作生活中
  • QT从入门到实战x篇_30_绘图设备(QPixmap、QBitmap、QImage和 QPicture;QPixmap、QBitmap绘制及保存;QImage像素操作;QPicture记录和重现)

    前面QT从入门到实战x篇 27 绘图事件QPainter 绘图事件void painterEvent 声明一个画家对象 QPainter painter this 画笔QPen 画刷QBrush QT从入门到实战x篇 28 绘图事件QPai
  • 用pandas进行数据分析实战

    安装pandas模块包 载入练习数据 在pandas中 常用的载入函数是read csv 除此之外还有read excel和read table table可以读取txt 若是服务器相关的部署 则还会用到read sql 直接访问数据库 但
  • 机器学习基础:核密度估计(Machine Learning Fundamentals: Kernel Density Estimation)

    在概率密度估计过程中 如果我们队随机变量的分布是已知的 那么可以直接使用参数估计的方法进行估计 如最大似然估计方法 然而在实际情况中 随机变量的参数是未知的 因此需要进行非参数估计 核密度估计是非参数估计的一种方法 也就是大家经常听见的pa
  • 关于LLVM IR和Valgrind 中间语言区别

    1 LLVM和Valgrind简介 LLVM Low Level VirtualMachine 是伊利诺伊州立大学香槟分校的ChrisLattner主持开发的一个编译器框架 随着ChrisLattner去苹果公司 LLVM作为苹果公司官方支
  • pymongo使用update_many方法批量更新记录

    使用的主要函数是 coll update many 当需要对同一批数据进行更新的时候 可以用这个函数 使用时 coll update many 筛选这一批数据需要查询的内容 字典类型 set 更新的内容 字典类型 使用方法如示例代码 示例代
  • 从0搭建Hyperledger Fabric2.5环境

    Hyperledger Fabric 2 5环境搭建 一 Linux环境准备 root登录 yum y install git curl docker docker compose tree yum y install autoconf a
  • NSNumber NSValue与NSDate 详解

    我们在编码中 很多时候需要将C里面原生的数据封装成对象 这样可以用NSDictionary或者NSArray来存取访问 尤其是一些做适配的情况下 这种封装是不可避免的 Objective C提供了不少类可以帮助我们 比较常见的是NSNumb
  • [转载]Stanford华人教授李飞飞写给她学生的一封信,如何做好研究以及写好PA

    De mystifying Good Research and Good Papers By Fei Fei Li 2009 03 01 Please remember this 1000 computer vision papers ge
  • 算法——动态规划算法

    动态规划的核心思路 动态规划的解题核心主要分为两步 第一步 定义问题 有的问题过于抽象 或者过于啰嗦干扰我们解题的思路 我们要做的就是将题干中的问题转化成一系列同类问题的某个解的情况 比如说 题目 求一个数列中最大连续子序列的和 我们要将这
  • tomcat部署项目

    今天总算是把部署tomcat部署项目的几种方式实验了一下 一 1 下载 Tomcat 服务器 官网下载地址 http tomcat apache org 2 启动并部署 Tomcat 服务器 解压 tomcat 安装包到一个非中文目录下 配
  • 微服务架构详解

    一 微服务架构的由来 在微服务架构出现之前 最常用的架构就是单体架构 俗称 一个jar war 包打天下 在一个jar包工程中 采用MVC架构 分为表现层 业务层 数据访问层 所有的业务模块 都放在这个工程中集成 如下图所示 随着软件行业规
  • DS18B20温度传感器

    1 DS18B20 单线数字温度传感器 即 一线器件 其具有独特的优点 采用单总线的接口方式 与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯 单总线具有经济性好 抗干扰能力强 适合于恶劣环境的现场温度测量 测量
  • 【前端】ant design中树形控件的父子节点受控实现

    前言 1 ant design的树形控件里面先设置好checkStrictly属性 即checkable 状态下节点选择完全受控 父子节点选中状态不再关联 这样的话 onCheck函数中的checkedKeys参数打印出来它是一个有chek