elementUI使用v-for创建无限级导航栏—— 递归组件

简介: elementUI使用v-for创建无限级导航栏—— 递归组件

前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。

elementUI使用v-for创建无限级导航栏—— 递归组件

直接copy,不需要墨迹

最新版本

el-menu无限递归组件完美版本

说明:

根据返回的数据动态循环渲染菜单,是否具有子级目录递归创建所有目录并具有复用性,动态绑定相关属性;

解决步骤:

1、使用element组件(具体步骤不在赘述)

2、先创建公共组件

(1)在第一级菜单循环过程中,如判断出当前菜单存在着子级菜单,渲染出当前菜单,并将当前菜单的子级属性(例如:child:[数组]),利用子组件传参的方式,传给我们现在正在封装的组件(俗称:无限套娃)。

递归组件封装 MenuTree.vue
<template>
  <div>
    <el-menu
      default-active
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b"
      unique-opened
    >
      <template v-for="(item) in menuList">
        <el-submenu v-if="item.child&&item.child.length>0" :key="item.id" :index="item.id">
          <template slot="title">
            <i class="el-icon-location"></i>
            <span>{{item.name}}</span>
          </template>
          <menu-sun :menuList="item.child"/> 
        </el-submenu>
        <el-menu-item v-else :key="item.id" :index="item.id">{{item.name}}</el-menu-item>
      </template>
    </el-menu>
  </div>
</template>
<script>
import MenuSun from "@/components/menuList.vue";
export default {
  name: "MenuSun",//必须要 递归组件的关键,并且要与引入组件的变量名称一致
  components: {
    MenuSun
  },
  props: {
    menuList: {}  // 菜单的数据
  }
};
</script>

使用

<template>
  <div>
    <div class="menuList">
      <menu-sun :menuList="menuList" />
    </div>
  </div>
</template>
<script>
 import MenuSun from "./MenuTree.vue";
export default {
  components: {
    MenuSun
  },
  data() {
    return {
      menuList: [
        { name: "一级菜单1", id: "1" },
        {
          name: "一级菜单2",
          id: "2",
          child: [
            { name: "二级菜单2-1", id: "2-1" },
            {
              name: "二级菜单2-2",
              id: "2-2",
              child: [{ name: "三级菜单1", id: "2-2-1" }]
            },
            {
              name: "二级菜单2-3",
              id: "2-3",
              child: [{ name: "三级菜单1", id: "2-3-1" }]
            }
          ]
        },
        {
          name: "一级菜单3",
          id: "3",
          child: [{ name: "二级菜单3-1", id: "3-1" }]
        },
        {
          name: "一级菜单4",
          id: "4",
          child: [
            {
              name: "二级菜单4-1",
              id: "4-1",
              child: [
                {
                  name: "三级菜单",
                  id: "4-1-1",
                  child: [{ name: "四级菜单", id: "4-1-1-1" }]
                },
                { name: "三级菜单", id: "4-1-2" }
              ]
            }
          ]
        }
      ]
    };
  }
};
</script>

效果

原文链接:无限极导航栏递归组件

参考:element-ui的navMenu使用v-for循环渲染不同子标签(el-menu-item和el-submenu)

目录
相关文章
|
NoSQL Java Redis
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
SpringBoot集成Redis解决表单重复提交接口幂等(亲测可用)
1144 0
|
消息中间件 存储 监控
消息队列:分布式系统中的重要组件
消息队列:分布式系统中的重要组件
|
2月前
|
IDE 开发工具 iOS开发
阿里云Qoder CN安装VSCode/JetBrains插件、登录使用完整操作文档,新手教程
Qoder CN是阿里云推出的智能编程助手,支持两种使用方式:下载开箱即用的独立IDE,或在JetBrains(IntelliJ、PyCharm等)及VS Code中安装插件。安装后登录即可享受AI辅助编码,提升开发效率。阿里云Qoder CN官网:https://t.aliyun.com/U/fEiOLV
|
8月前
|
人工智能 JavaScript 数据可视化
保姆级教程:OpenClaw(Clawdbot)阿里云及Windows本地部署方案,与本地Ollama配置指南
在AI智能体快速普及的2026年,OpenClaw(前身为Clawdbot)凭借开源免费、可自托管、系统级权限控制的核心优势,成为个人与轻量团队打造专属AI助手的首选工具,其GitHub星标已飙升至18万+,登顶多个开源榜单。Ollama作为目前最受开发者欢迎的本地大模型运行工具,GitHub星标突破16万,支持480+开源模型一键部署,二者组合可实现“本地推理+本地执行”的全闭环,彻底摆脱对云端大模型的依赖,确保数据隐私安全且无网络依赖。
4702 2
|
12月前
|
人工智能 搜索推荐 安全
【微笑讲堂】盘点市面上的Geo优化公司优点和缺点
微笑老师深度解析2025年Geo优化公司优劣势,涵盖快法务、欧博东方、大树科技等十大服务商。从技术实力、行业专长到数据透明与服务模式,全面解读AI时代下生成式引擎优化(GEO)新趋势,助力企业精准选择合作伙伴,抢占AI搜索红利。
811 7
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
1465 136
|
数据采集 算法 数据可视化
阿里云百炼开发者评测
阿里云百炼是一站式大模型开发平台,具有以下特点: 知识检索应用:搭建智能问答助手需经历数据准备、知识库建立、应用创建与配置、测试与优化四步,存在数据质量、索引构建、问答效果调优等困难,建议加强数据预处理、优化索引构建机制并加强产品支持和社区建设。 模型训练:通过数据准备、调优等操作提升模型问答效果,控制台操作指引清晰,但可增加更多行业模板并优化模型训练界面。 流程管理功能:通过自定义业务流程对接智能体应用满足场景需求,使用效果较好,但存在部分参数设置不明确的问题,建议预制系统模板方便用户学习。整体上,百炼功能全面,但在细节和用户体验方面有待改进。
1001 1
|
安全 Java 测试技术
【开题报告】基于SpringBoot的高校就业管理系统的设计与实现
【开题报告】基于SpringBoot的高校就业管理系统的设计与实现
1341 0
|
机器学习/深度学习
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码
本文探讨了深度可分离卷积和空间可分离卷积,通过代码示例展示了它们在降低计算复杂性和提高效率方面的优势。
3734 2
深度学习笔记(十二):普通卷积、深度可分离卷积、空间可分离卷积代码