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

vue递归组件

父组件:

<template><div><treeVue :treeData="treeData"></treeVue></div>
</template><script setup lang="ts">
import { reactive } from "vue";
import treeVue from "./tree.vue";interface Tree {name: string,checked: boolean,children?: Tree[]
}const treeData = reactive<Tree[]>([{name: "1",checked: false,children: [{name: "1-1",checked: false,},{name: "1-2",checked: true,},],},{name: "2",checked: false,},{name: "3",checked: false,children: [{name: "3-1",checked: false,children: [{name: "3-1-1",checked: false,},{name: "3-1-2",checked: false,},],},{name: "3-2",checked: false,},],},
]);
</script><style scoped>
</style>

子组件:

<template><!-- 递归组件使用点击事件,需要阻止冒泡 --><div @click.stop="clickTap(item, $event)" class="tree" v-for="item in treeData"><input type="checkbox" v-model="item.checked"><span>{{ item.name }}</span><!-- 可以使用文件名,不需要引入,如果想修改名称的话,需要自定义name --><!-- 第一种 --><tree v-if="item?.children?.length" :treeData="item?.children"></tree><!-- 第二种 --><!-- <aaaaaa v-if="item?.children?.length" :treeData="item?.children"></aaaaaa> --></div>
</template>
<!-- 第二种 -->
<!-- <script lang="ts">
export default {name: 'aaaaaa'
}
</script> -->
<script setup lang="ts">
interface Tree {name: string,checked: boolean,children?: Tree[]
}
defineProps<{treeData?: Tree[]
}>();
const clickTap = (item, e) => {console.log(item);console.log(e.target);
}
</script><style scoped>
.tree {margin-left: 20px;
}
</style>

递归组件可以直接使用组件名称,不需要引入,如需要引入,则定义组件name,使用name名称

第一种,直接使用tree.vue名称引入

<!-- 第一种 -->
<tree v-if="item?.children?.length" :treeData="item?.children"></tree>

第二种,定义name,使用name名称引入

<!-- 第二种 -->
<aaaaaa v-if="item?.children?.length" :treeData="item?.children"></aaaaaa>
<!-- 第二种 -->
<script lang="ts">
export default {name: 'aaaaaa'
}
</script>

http://www.lryc.cn/news/163858.html

相关文章:

  • 软件测试/测试开发丨测试用例自动录入 学习笔记
  • 来学Python啦,大话字符串
  • pyqt5设置背景图片
  • C# WPF 自己写的一个模拟病毒传播的程序,有可视化
  • stable diffusion实践操作-大模型介绍-SDXL1大模型
  • 软考高级系统架构设计师系列案例考点专题四:嵌入式系统
  • Django Form实现表单使用及应用场景
  • golang面试题:json包变量不加tag会怎么样?
  • 国内项目管理中级证书CSPM-3正在报名!
  • vue表格不显示列号123456
  • 【大数据】Kafka 入门指南
  • Qt 5.15集成Crypto++ 8.8.0(MSVC 2019)笔记
  • 前端面试的话术集锦第 9 篇:高频考点(webpack性能优化)
  • 程序员,你真热爱编程吗?
  • 算法通关村-----海量数据的处理方法
  • Pytorch 多卡并行(1)—— 原理简介和 DDP 并行实践
  • 快速排序(重点)
  • python高级内置函数介绍及应用举例
  • 人体呼吸存在传感器成品,毫米波雷达探测感知技术,引领智能家居新潮流
  • 软件设计模式(三):责任链模式
  • 开发者的商业智慧:产品立项策划你知道多少?
  • Linux 6.6 初步支持AMD 新一代 Zen 5 处理器
  • 第五章 Linux常用应用软件
  • 连接云-边-端,构建火山引擎边缘云网技术体系
  • 系统架构设计师(第二版)学习笔记----系统架构设计师概述
  • 自动化测试:Selenium中的时间等待
  • vim 替换命令 “:s“
  • 【golang】调度系列之m
  • 可持久化线段树
  • 运行 Node.js 与浏览器 JavaScript