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

vue3 基于el-tree增加、删除节点(非TypeScript 写法)

话不多说,直接贴代码

<template><div class="custom-tree-container"><!-- <p>Using render-content</p><el-tree style="max-width: 600px" :data="dataSource" show-checkbox node-key="id" default-expand-all:expand-on-click-node="false" :render-content="renderContent" /> --><p>Using scoped slot</p><el-tree style="max-width: 600px" :data="dataSource" show-checkbox node-key="id" default-expand-all:expand-on-click-node="false"><template #default="{ node, data }"><span class="custom-tree-node"><span>{{ node.label }}</span><span><a @click="append(data)"> Append </a><a style="margin-left: 8px" @click="remove(node, data)"> Delete </a></span></span></template></el-tree></div>
</template><script>
import { reactive, ref, toRefs } from 'vue'
// import {Node} from 'element-plus/es/components/tree/src/model/node'export default {name: 'part',setup() {const state = reactive({dataSource: [{id: 1,label: 'Level one 1',children: [{id: 4,label: 'Level two 1-1',children: [{id: 9,label: 'Level three 1-1-1'}]}]}]})const append = (data) => {let treeNodeId = data.$treeNodeId;console.info(data)// alert('当前id'+data.id)// alert(data.$treeNodeId)let id =data.id*100+1const newChild = { id: id, label: data.label+'-'+id, children: [] };if (!data.children) {data.children = [];}data.children.push(newChild);// state.dataSource = [data];}const remove = (node, data) => {const parent = node.parent;const children = parent.data.children || parent.data;const index = children.findIndex(d => d.id === data.id);children.splice(index, 1);// dataSource.value = [...dataSource.value];};return {...toRefs(state),append,remove}}
}</script><style>
.custom-tree-node {flex: 1;display: flex;align-items: center;justify-content: space-between;font-size: 14px;padding-right: 8px;
}
</style>

效果如下

在这里插入图片描述

相关文章:

  • 深入解读Prometheus Adapter:云原生监控的核心组件
  • 生成式人工智能 - stable diffusion web-ui安装教程
  • Struts2 系列漏洞 - S2-003、S2-005
  • 蓝桥杯物联网竞赛_STM32L071KBU6_第十五届蓝桥杯物联网竞赛国赛代码解析
  • Shell脚本
  • Web前端开发 - 5 - JavaScript基础
  • 滴滴出行 大数据研发实习生【继任】
  • Direct local .aar file dependencies are not supported when building an AAR.
  • 算法之分治
  • java 中for、while循环
  • Apache Hadoop的核心组成及其架构
  • 气膜建筑在体育和娱乐行业的多样化应用—轻空间
  • 小程序视图渲染数据和部分事件的绑定
  • 讲透计算机网络知识(实战篇)01——计算机网络和协议
  • 企业级开源项目,云缓存解决方案:CacheCloud
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【刷算法】从上往下打印二叉树
  • 07.Android之多媒体问题
  • ES6之路之模块详解
  • GraphQL学习过程应该是这样的
  • java中的hashCode
  • 利用DataURL技术在网页上显示图片
  • 前端
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何解决微信端直接跳WAP端
  • 微信公众号开发小记——5.python微信红包
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ## 1.3.Git命令
  • #if 1...#endif
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • $forceUpdate()函数
  • (02)vite环境变量配置
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (Java)【深基9.例1】选举学生会
  • (SERIES12)DM性能优化
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (区间dp) (经典例题) 石子合并
  • (五)关系数据库标准语言SQL
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (自适应手机端)行业协会机构网站模板
  • *p++,*(p++),*++p,(*p)++区别?
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .bat批处理出现中文乱码的情况
  • .Net 6.0 监听Windows网络状态切换
  • .Net CF下精确的计时器
  • .NET MVC 验证码
  • .NET 表达式计算:Expression Evaluator
  • .NET 设计模式初探
  • .NET4.0并行计算技术基础(1)
  • .Net6 Api Swagger配置
  • .NET程序集编辑器/调试器 dnSpy 使用介绍
  • .net经典笔试题
  • @test注解_Spring 自定义注解你了解过吗?