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

12.17 vue递归组件

recursion 递归

使用递归组件可以方便地在组件内部递归地渲染子节点。例如,可以使用一个名为 tree-node 的组件,该组件在其模板中递归地包含自身,并在每一层次上显示节点的标签和其子节点。这样,当数据发生变化时,组件会自动重新渲染,并保持节点层次结构的正确性。

![[850X850.PNG]]

多级菜单数据

data.js

const data = [ { id: 1, title: '汉堡店', cont: [ { id: 2, title: '小吃系列', cont: [ { id: 3, title: '轰炸大鱿鱼'}, { id: 4, title: '香酥鸡柳'}, { id: 5, title: '脆皮土豆'} ] }, { id: 6, title: '汉堡系列', cont: [ { id: 7, title: '深海鳕鱼堡'}, { id: 8, title: '香辣鸡腿堡'}, { id: 9, title: '劲脆鸡腿堡'} ] }, { id: 10, title: '饮品系列', cont: [ { id: 11, title: '可口可乐'}, { id: 12, title: '雪碧'}, { id: 13, title: '冰淇淋'} ] } ] }, { id: 11, title: '牛排店', cont: [ { id: 12, title: '牛排系列', cont: [ { id: 13, title: '黑椒牛排'}, { id: 14, title: '西冷牛排'}, { id: 15, title: '菲力牛排'} ] }, { id: 16, title: '咖啡系列', cont: [ { id: 17, title: '卡布奇诺'}, { id: 18, title: '摩卡'} ] }, { id: 20, title: '沙拉系列', cont: [ { id: 21, title: '水果沙拉'}, { id: 22, title: '鸡胸肉沙拉'}, { id: 23, title: '牛排沙拉'} ] } ] }, { id: 31, title: '红酒店', cont: [ { id: 32, title: '国产葡萄酒系列', cont: [ { id: 33, title: '长城红标'}, { id: 34, title: '张裕二星'}, { id: 35, title: '王朝干红'} ] }, { id: 36, title: '进口葡萄酒系列', cont: [ { id: 37, title: '法国都夏'}, { id: 38, title: '拉菲庄园'}, { id: 39, title: '卡斯特.巴蒂'} ] }, { id: 40, title: '洋酒系列', cont: [ { id: 41, title: '杰克丹尼'}, { id: 42, title: '人头马部落'}, { id: 43, title: '轩尼诗VSOP'} ] } ] } ] export default data

递归****组件定义

Vue3

递归****组件的父组件

<script setup> import foodMenu from './foodMenu.vue'; import menuData from './data.js' </script> <template> <div class="recursion"> <h3>递归组件的父组件</h3> <foodMenu :menu-data="menuData"></foodMenu> </div> </template> <style lang="scss" scoped> </style>

递归****组件

<script setup> defineProps({ menuData: Array }) </script> <template> <ul> <li v-for="menu in menuData" :key="menu.id"> <p>---{{ menu.title }}</p> <food-menu :menu-data="menu.cont"></food-menu> </li> </ul> </template> <style lang="scss" scoped></style>

Vue2

递归****组件的父组件

<template> <div id="app"> <food-menu :menu-data="menuData"></food-menu> </div> </template> <script> import menuData from "./data"; import foodMenu from './FoodMenu.vue' export default { data(){ return { menuData: menuData } }, components: { foodMenu } }; </script> <style lang="scss"> </style>

递归****组件

foodMenu.vue

递归组件的技术要点: 一定要设置name属性,递归使用时,用得就是name属性的值

<template> <ul> <li v-for="menu in menuData" :key="menu.id"> <p>---{{ menu.title }}</p> <food-menu :menu-data="menu.cont"></food-menu> <!-- 等价于: <ul> <li> <p></p> <ul> <li> <p></p> </li> </ul> </li> </ul> --> </li> </ul> </template> <script> export default { // 组件的name属性有三种用法 // 1. <keep-alive include="组件的name"></keep-alive> // 2. vue devtools 显示组件的name // 3. 递归组件 name: "foodMenu", props: ["menuData"], data() { return {}; }, }; </script> <style> </style>
http://www.cnnetsun.cn/news/136517.html

相关文章:

  • QtScrcpy高刷投屏优化指南:告别卡顿,享受流畅体验
  • 终极移动端Windows应用运行指南:从零到流畅体验
  • 大学里的网络安全专业为什么没多少人就读?
  • 信息安全和网络空间安全这2个专业怎么选?老网安告诉你答案!
  • 英语发音MP3音频库:119,376个单词标准发音完整解决方案
  • 瞄准2026:AI安全、数据隐私与云原生——网络安全趋势预测与挑战分析
  • 重磅收藏!Java程序员转AI大模型:从代码高手到AI架构师的进阶指南
  • 2026网络安全进阶路线:盘点撬动高薪的四大关键证书
  • LangGraph实战教程:构建智能旅游规划助手,深入理解AI工作流架构【值得收藏】
  • 淘宝直播弹幕采集完整指南:5分钟快速上手数据分析
  • 文本驱动可视化:5分钟掌握专业级图表制作
  • Clipper2多边形处理技术深度解析与实战应用
  • 错过再等十年:AI驱动的生物制药Agent智能实验设计新范式
  • 造纸车间的“信号指挥官”:耐达讯自动化Profinet六路集线器,让变频器“步调一致”
  • MaterialDesignInXamlToolkit实战指南:5步打造现代化WPF界面
  • 中东电商市场,正在成为中国卖家的必争之地!
  • 为什么你的边缘Agent总是部署失败?深度剖析常见陷阱与对策
  • 一文搞定前端CSS常用布局
  • Kotaemon用户行为分析插件开发教程
  • 额温枪PCBA方案开发全流程规划
  • Kotaemon针灸穴位查询:图文结合精准定位
  • 二极管钳位三电平VSG仿真模型 1.加入中点电位平衡 2.仿真有视频教程 3.THD均<5%
  • 通达信轻松买卖点副图,源码分享
  • 仅限内部分享:电力巡检Agent路径生成模型参数调优全记录
  • ChromePass密码找回工具:轻松获取Chrome保存的所有密码
  • BookmarkHub:告别浏览器书签混乱的智能同步神器
  • 51、保障系统安全:从漏洞扫描到灾难恢复的全面指南
  • DearPyGUI:为什么这款Python GUI框架正在重新定义界面开发?
  • Matlab模拟OAM螺旋谱展开,包括光束本征态、各类湍流、衍射、干涉下的OAM谱分布
  • 【核工业Agent故障处理全攻略】:揭秘高危场景下的7大应急响应策略