Vue 菜单组件开发教程

在 Vue 项目中,我们常常需要构建各种菜单结构。下面就来详细介绍如何基于给定的代码来开发一个菜单组件。
在这里插入图片描述

组件部分

一、模板部分

<template> 
    <template v-for="item in menuTree" :key="item._id"> 
        <el-sub-menu v-if="item.children && item.children.length > 0" :key="item._id" :index="item.name">
            <template #title>
                <span>{{ item.title }}</span>
            </template>
            <el-menu-item-group>
                <tree-menu :menuTree="item.children" />
            </el-menu-item-group>
        </el-sub-menu>
        <el-menu-item v-else :index="item.name" @click="clickMenu(item)" style="">
            <span>{{ item.title }}</span>
        </el-menu-item>
    </template>
</template>

这里通过 v-for 循环遍历 menuTree 数据来生成菜单项目。根据每个项目是否有子项,分别渲染为不同的组件。

二、脚本部分

<script setup lang="ts">
    import { onMounted, reactive,  ref,defineProps} from 'vue';
    
    const props = defineProps({
        menuTree: []
    });

    // 点击菜单时的处理函数
    function clickMenu(val) {
        // 这里可以进行各种点击后的操作
    }
</script>

我们导入了必要的模块,定义了接收外部传入的 menuTree 数据的属性。clickMenu 函数用于处理菜单点击事件。

三、样式部分

<style>
 .el-menu-item,.el-menu-item{
    width: 230px;
  }
</style>

这部分用于设置菜单项目的宽度等样式。

父级调用示例

示例代码调用

假设我们有以下的菜单数据:

const menuData = [
    {
        _id: 1,
        name: '菜单 1',
        title: '菜单 1 标题',
        children: [
            {
                _id: 2,
                name: '子菜单 1',
                title: '子菜单 1 标题'
            }
        ]
    },
    {
        _id: 3,
        name: '菜单 2',
        title: '菜单 2 标题',
        ismenu: 1
    }
];

然后在使用该组件的地方可以这样进行设置:

			
	 <el-menu :default-active="activeMenu" class="nav-menu" :router="true" :show-timeout="3000" :collapse="isCollapse">

       <tree-menu :menuTree="menuData" />
	</el-menu>

通过以上步骤,我们就可以成功开发出一个具有层次结构的菜单组件,根据实际需求灵活地展示和处理菜单操作。

希望这个教程对大家有所帮助,让大家能够更好地理解和掌握 Vue 菜单组件的开发过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/657733.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenHarmony 适配HDMI接口声卡

高清多媒体接口&#xff08;High Definition Multimedia Interface&#xff0c;HDMI &#xff09;是一种全数字化视频和声音发送接口&#xff0c;可以发送未压缩的音频及视频信号。HDMI可用于机顶盒、DVD播放机、个人计算机、电视、游戏主机、综合扩大机、数字音响与电视机等设…

【智能算法应用】灰狼算法GWO求解三维路径规划问题

目录 1.算法原理2.三维路径规划数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.三维路径规划数学模型 三维地形可以等效处理成山峰地形&#xff0c;数学模型为: z ( x , y ) h 0 ∑ j 1 N h j max ⁡…

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

OrangePi Kunpeng Pro ——信创再接力

文章目录 OrangePi Kunpeng Pro ——信创再接力1. 绪论1.1 开箱 2. 硬件介绍2.1 硬件配置2.2 硬件清单 3. 网络测试3.1 有线连接3.2 WIFI连接 4.查看系统配置5. 安装常用软件5.1 安装python5.1.1 更换pip源为国内清华源 5.2 安装docker5.3 安装opencv5.4 安装dlib 6.CPU多进程能…

闲话 .NET(3):.NET Framework 的缺点

前言 2016 年&#xff0c;微软正式推出 .NET Core 1.0&#xff0c;并在 2019 年全面停止 .NET Framework 的更新。 .NET Core 并不是 .NET Framework 的升级版&#xff0c;而是一个从头开始开发的全新平台&#xff0c;一个跟 .NET Framework 截然不同的开源技术框架。 微软为…

计算属性与监听属性

【 1 】计算属性 计算属性大致就是这样 # 1 计算属性是基于它们的依赖进行缓存的# 2 计算属性只有在它的相关依赖发生改变时才会重新求值# 3 计算属性就像Python中的property&#xff0c;可以把方法/函数伪装成属性 # 计算属性本质上是一个函数&#xff0c;它们可以通过 get…

UML 在 vs-code上的快速使用

UML 在 vs-code上的快速使用 1.软件准备工作2.创建第一张甘特图2.1 创建 UML文件: xxxx. puml2.2 输入甘特图代码2.3 VS code 生成甘特图 结束 。 1.软件准备工作 使用的软件为&#xff1a;VS CODE使用插件 &#xff1a; PluntUML2.创建第一张甘特图 2.1 创建 UML文件: xxxx. …

基于python flask的疾病数据采集与可视化大屏,实现关联规则算法的治疗方法分析

背景 基于Python Flask的疾病数据采集与可视化大屏&#xff0c;旨在实现对疾病数据的采集、分析和可视化展示&#xff0c;为医疗领域提供决策支持和治疗方法分析。其中&#xff0c;关联规则算法被应用于治疗方法分析&#xff0c;旨在发现不同治疗方式之间的关联性和规律性&…

容器监控方案

1、docker部署prometheus Prometheus是一套开源的系统监控报警框架&#xff0c;它基于时序数据库&#xff0c;并通过HTTP协议周期性地从被监控的组件中抓取指标数据。以下是一些关于Prometheus的详细介绍&#xff1a; 基本概念&#xff1a;Prometheus所有采集的监控数据均以指…

阿里开源React应用动效解决方案:ant-motion

ant-motion&#xff1a;简化动效开发&#xff0c;提升用户体验 - 精选真开源&#xff0c;释放新价值。 概览 Ant Motion是由Ant Design团队精心打造&#xff0c;专为React应用设计的动画规范和组件库。它不仅仅是一套动画规范&#xff0c;更是一个完整的解决方案&#xff0c;旨…

[SCTF2019]Who is he

unity 游戏&#xff0c;直接输入字符串 直接修改 if 判断&#xff0c;看能不能直接输出flag 修改了程序逻辑&#xff0c;但还是输出了 明明已经把这个 if 删了 不知道为什么还会输出这串字符 应该程序还有什么引入吧&#xff0c;看 wp 应该先查一下程序的动态链接库 DLL 是…

探讨大米自动化生产线包装设备的智能化发展趋势

随着科技的飞速发展&#xff0c;智能化已经成为各行各业转型升级的重要方向。在大米生产领域&#xff0c;自动化生产线包装设备的智能化发展更是引领着粮食产业的未来潮流。星派将从智能化技术、市场需求、发展趋势等方面&#xff0c;探讨大米自动化生产线包装设备的智能化发展…

22.Volatile原理

文章目录 Volatile原理1.Volatile语义中的内存屏障1.1.volatile写操作的内存屏障1.1.1.StoreStore 屏障1.1.2.StoreLoad 屏障 1.2.volatile读操作的内存屏障1.2.1.LoadStore屏障1.2.2.LoadLoad屏障 2.volatile不具备原子性2.1.原理 Volatile原理 1.Volatile语义中的内存屏障 在…

多模态大模型:系统、趋势与问题

引言 多模态大模型是当今人工智能领域的热门方向之一。它不仅能处理文本&#xff0c;还能理解和生成图像、视频、语音等多种模态的数据。这种能力使得多模态大模型在自然语言处理、计算机视觉等多个领域展示出巨大的潜力和应用价值。那么&#xff0c;多模态大模型是如何训练出…

web自动化-数据驱动与失败用例截图、失败重新运行

因为只有失败的用例需要截图&#xff0c;那么问题就是&#xff1a; 什么时候用例会失败&#xff1f; 数据驱动测试 我们前面覆盖到的用例都是正常的用例&#xff0c;如果要测试异常的用例呢&#xff1f; 我们来写一下登录的异常 场景&#xff1a;【login_page】 # 用户输入框…

vivado设置Vscode为默认编辑器

D:\vscode\Microsoft VS Code\Code.exe -g [file name]:[line number]

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域&#xff0c;开源大模型和闭源大模型一直并存&#xff0c;各自有其独特的优势和挑战。下面&#xff0c;我们将从数据隐私、商业应用和社区参与三个方向&#xff0c;对这两种模型进行深入探讨。 一、数据隐私 开源大模型&#xff1a; 1. 透明度高&#xff1a; …

YoloV8实战:各种图绘制汇总(mAP50、mAP50-95、loss、PR_curve、F1_curve)|科研必备|绘图神器

摘要 本文的内容是告诉大家如何绘制mAP50、mAP50-95、loss、PR_curve、F1_curve等图像,方便大家写论文。 绘制mAP50、mAP50-95、loss等图。 先上效果,如下图: 首先将,训练的result.csv汇总到一个文件夹下面(这样方便寻找),要不然找起来太麻烦。如下图: 我都放到re…

The Sandbox 和 Bitkub 联手增强东南亚元宇宙中心

作为去中心化游戏虚拟世界和区块链平台的先驱&#xff0c;The Sandbox 正与泰国领先的区块链网络 Bitkub Blockchain Technology Co., Ltd. 展开创新合作。双方合作的目的是将Bitkub元宇宙的影响力扩展到The Sandbox&#xff0c;建立一个元宇宙中心&#xff0c;向用户承诺从 Bi…

5.28学习总结

java复习总结 hashcode()和equals() hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。 equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。 运行效率&#xff1a;hashcode的时间复杂度为O(1)&#xff08;因为只要计算一次哈…