当前位置:   article > 正文

Vue3.x 之 Element Plus 导航菜单栏多级_elementplus导航菜单

elementplus导航菜单
vue版本node版本Element Plus版本
^3.2.25v16.14.2

^2.1.8

使用了unplugin-vue-components 和 unplugin-auto-import自动导入插件的可以将组件放在src/components文件夹内则不需引入即可使用,你只需关注components.d.ts文件内是否已引入该组件。

此处文件在src/layout文件夹下面需手动引入,setup语法糖引入即可使用不需要注册组件。

SubMenu.vue  父组件

  1. <template>
  2. <template v-for="item in menu">
  3. <!-- 一级菜单跳转 - 具有能跳转路由的功能 -->
  4. <el-menu-item v-if="item.pageHtml" :index="item.pageHtml">
  5. {{ item.name }}
  6. </el-menu-item>
  7. <!-- 分级菜单 - 此一级菜单不应具有跳转功能 -->
  8. <el-sub-menu v-else :index="item.id">
  9. <template #title>
  10. <span>{{ item.name }}</span>
  11. </template>
  12. <!-- 下级菜单 -->
  13. <MenuItem :list="item.list"></MenuItem>
  14. </el-sub-menu>
  15. </template>
  16. </template>
  17. <script lang="ts" setup>
  18. import MenuItem from './MenuItem.vue'
  19. import { MenuList } from './type'
  20. import { ref } from 'vue'
  21. // 此处使用的是session保存的页面数据,数据由后台接口获取
  22. const _menu = JSON.parse(sessionStorage.getItem('MENU') || '[]')
  23. const menu: MenuList[] = ref(_menu)
  24. </script>

MenuItem.vue 子组件

  1. <template>
  2. <template v-for="item in props.list">
  3. <el-menu-item :index="item.pageHtml">
  4. {{ item.name }}
  5. </el-menu-item>
  6. <!-- 子菜单内具有下级菜单,使用el-sub-menu渲染分级 -->
  7. <el-sub-menu v-if="item.list && item.list.length" :index="item.id">
  8. <template #title>
  9. <span>{{ item.name }}</span>
  10. </template>
  11. <!-- 递归组件 - 此组件为当前组件 -->
  12. <MenuItem :list="item.list"></MenuItem>
  13. </el-sub-menu>
  14. </template>
  15. </template>
  16. <script lang="ts" setup>
  17. import * as Type from './type'
  18. // 定义props接收的字段
  19. interface Props {
  20. list: Type.MenuList[]
  21. }
  22. // 获取父组件传进来的子菜单列表
  23. const props = defineProps<Props>()
  24. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/225773?site
推荐阅读
相关标签
  

闽ICP备14008679号