vue3+element-plus 实现动态菜单和动态路由的渲染

目录的数据结构,其中还包括二级目录

复制代码
import { useRoute, useRouter } from 'vue-router'
import MenuTree from './components/MenuTree.vue'

const route = useRoute()
const router = useRouter()
const subchildren = ref(目录数据)

<el-menu
        active-text-color="#88733C"
        background-color="#e3ddd0"
        :default-active="$route.path"
        text-color="#808080"
        router
      >
        <MenuTree :menuList="subchildren"></MenuTree>
</el-menu>

子组件MenuTree:

复制代码
<script setup>
const props = defineProps(['menuList'])
</script>
<template>
  <template v-for="item in props.menuList" :key="item.id">
    <!-- {{ item }} -->
    <!--      分为两种方式渲染:有子菜单和没有子菜单-->
    <el-sub-menu :index="item.name" v-if="item.children.length !== 0">
      <template #title>
        <span>{{ item.title }}</span>
      </template>
      <!--        有子菜单的继续遍历(递归)-->
      <MenuTree :menuList="item.children"></MenuTree>
    </el-sub-menu>
    <!--      没有子菜单-->
    <el-menu-item :index="item.name" v-else>
      <span>{{ item.title }}</span>
    </el-menu-item>
  </template>
</template>
<style lang="scss" scoped></style>
相关推荐
爱勇宝7 小时前
第 1 章:别把“需求文档”当成真正的需求
前端·后端·程序员
梨子同志8 小时前
常用命令
前端
梨子同志8 小时前
React 状态管理
前端
Dxy12393102168 小时前
MySQL索引完整教程:创建、查看、修改、删除与日常管理
前端·javascript·mysql
剪刀石头布啊9 小时前
js能被遍历的集合有哪些特征,为何能被遍历
前端
剪刀石头布啊9 小时前
js解构
前端
剪刀石头布啊9 小时前
防抖功能的逐步递进
前端
剪刀石头布啊9 小时前
对象的大小比较与面向对象思考
前端
端庄的战斗机10 小时前
javascript 设计模式(文章很长,请自备瓜子,水果和眼药水)
开发语言·javascript·设计模式
最爱老式锅包肉11 小时前
《HarmonyOS技术精讲-ArkWeb》桥接两岸:JSBridge原生与Web互调
前端·华为·harmonyos