vue3树形组件+封装+应用

ops/2025/1/12 10:28:08/

文章目录

    • 概要
      • 应用场景
      • 代码注释
      • 综合评价
      • 注意事项
    • 功能拓展
      • 代码说明

概要

创建一个基于Vue 3的树形结构组件,用于展示具有层级关系的数据,并提供了节点展开/折叠、点击等交互功能。以下是对其应用场景、代码注释以及综合评价和注意事项的详细说明。

应用场景

这个组件适用于需要展示层级结构数据的场景,例如:

  • 菜单导航:展示多级菜单,用户可以点击展开或折叠子菜单。
  • 文件目录结构:呈现文件系统的目录层级,方便用户浏览和操作。
  • 组织架构展示:展示公司或团队的组织架构,显示不同层级的人员或部门。
  • 图标自定义:根据项目需求可自定义树形结构以及不同层级样式及不同图标,自行修改更换即可。

代码注释

<template><div class="treeBox" id="treeBox"><!-- 遍历树形数据,为每个节点生成相应的DOM元素 --><div v-for="(item, index) in props.treeData" @click.stop.prevent="lonelyClick(item)" :title="item.label" :class="['lonely', 'lonely'+item.level]"><!-- 如果节点有子节点,显示展开/折叠图标 --><span @click.stop="iconClick(item, $event)" v-if="item.children"><el-icon :class="['faicon','level'+item.level, 'downIcon']" v-if="item.isExtend"><DArrowRight /></el-icon><el-icon :class="['faicon','level'+item.level, 'rightIcon']" v-else><DArrowRight/></el-icon></span><!-- 如果节点有图片,显示图片图标 --><img :src="item.img" alt="" v-if="item.img" :class="['imgIcon', 'level'+item.level]"><!-- 显示节点标签,点击触发lonelyClick方法 --><span class="label" @click.stop="lonelyClick(item)":class="['level'+item.level, item.isActive? 'styActive' : '']">{{ item.label }}</span><!-- 如果节点有子节点且子节点数组不为空,显示子节点容器 --><div v-if="item.children&&item.children.length" class="childBox"><!-- 递归渲染子树形结构,只有当节点展开时才显示 --><myTree :treeData="item.children" v-if="item.isShow" @menuClick="menuClick"></myTree></div></div></div>
</template>
<script>
export default {name: "myTree",
};
</script>
<script setup>import {ref,reactive,toRefs,onMounted,getCurrentInstance} from "vue"// 定义组件接收的props,treeData为树形结构数据,默认提供了一个示例数据const props = defineProps({treeData: {type: Array,default: [{id: "1",label: "装备基础数据管理",img: null, //new URL(`./img/downArrow.png`, import.meta.url).href,path: "",isExtend: true,isShow: true,agentType: null,isActive: false,children: [{id: "1-1",label: "多源数据引接",img: null,pid: "1",path: "",isExtend: true,isShow: true,agentType: null,isActive: false,},],}]},})// 定义组件触发的事件,包括menuClick和iconClickconst emit = defineEmits(["menuClick", "iconClick"])// 定义响应式数据state,目前只有一个contentFlag属性const state = reactive({contentFlag: true})// 递归处理树形数据的方法,设置节点的isExtend、isShow和level属性const recursionArr = (arr) => {

http://www.ppmy.cn/ops/149425.html

相关文章

Spring Boot 和微服务:快速入门指南

&#x1f496; 欢迎来到我的博客&#xff01; 非常高兴能在这里与您相遇。在这里&#xff0c;您不仅能获得有趣的技术分享&#xff0c;还能感受到轻松愉快的氛围。无论您是编程新手&#xff0c;还是资深开发者&#xff0c;都能在这里找到属于您的知识宝藏&#xff0c;学习和成长…

某漫画网站JS逆向反混淆流程分析

文章目录 1. 写在前面1. 接口分析2. 反混淆分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Pyth…

Docker 服务、镜像、容器之命令(Docker Services, Images, and Container Commands)

Docker 服务、镜像、容器之命令 Docker是一个强大的容器化平台&#xff0c;能够帮助开发者高效地构建、部署和管理应用程序。本文将详细介绍Docker的服务命令、镜像命令和容器命令&#xff0c;帮助你快速上手Docker。 一、Docker的服务相关命令 在使用Docker之前&#xff0c…

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略&#xff0c;它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意&#xff0c;将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描&#xff0c;寻找可入侵的目标时&…

数据通过canal 同步es,存在延迟问题,解决方案

当使用 Canal 同步数据到 Elasticsearch&#xff08;ES&#xff09;时&#xff0c;出现延迟问题通常源于多个因素&#xff0c;如 Canal 配置、网络延迟、ES 的负载和性能瓶颈等。以下是一些解决方案&#xff0c;帮助减少和解决延迟问题&#xff1a; 1. 优化 Canal 配置 Canal…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务&#xff0c;样本数据如下 可以看到几个句子及其对应的标签&#xff0c;其中1表示正面情绪&#xff0c;0表示负面情绪。我们可以利用给定的数据集训练一个分类器&#xff0c;对句子所表达的…

新能源网站提升用户体验的关键

新能源网站的用户体验对于吸引和留住访问者至关重要。一个优秀的用户体验可以增加用户的满意度&#xff0c;提高他们对网站的忠诚度。在设计新能源网站时&#xff0c;关键在于简洁明了的界面和易于导航的布局。用户应该能够轻松找到他们需要的信息&#xff0c;而不会感到困惑或…

PythonOpenCV图片识别

在windows下面&#xff0c;使用python opencv 进行识别&#xff0c;获取到坐标。 依赖安装&#xff1a; pip install opencv-python pip install numpy pip install pyautogui pip install pywin32代码&#xff1a; import cv2 import numpy as np import pyautogui import o…