在 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 菜单组件的开发过程。