从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战九(整体布局02)

使用el-menu和el-sub-menu及el-menu-item导航

src/layout目录下新增components目录,components目录下新增PageSidebar.vue
代码基本思想为:读取router中定义的routes数组,渲染绑定到el-menu。
el-menu和el-sub-menu及el-menu-item的区别,请参考本文最后一个图。

<template>
  <div>
    <el-menu :default-active="defaultActive" router :collapse="isCollapse">
      <template v-for="(item, i) in treeData" :key="item.path">
        <el-sub-menu  :index="item.path" v-if="item.children && item.children.length > 0">
          <template #title>
            <el-icon v-if="item.meta.icon"><component :is="item.meta.icon"></component></el-icon>
            <span>{{ item.name }}</span>
          </template>
          <template v-for="(child, ci) in item.children" :key="ci">
            <el-menu-item :index="child.path">
              <el-icon><component :is="child.meta.icon"></component></el-icon>
              {{ child.name }}
            </el-menu-item>
          </template>
        </el-sub-menu>
      </template>
    </el-menu>
  </div>
</template>
<script setup>
import { computed,ref } from 'vue';
import { useRouter, useRoute } from 'vue-router';
const router = useRouter();
const route = useRoute();

const treeData = router.getRoutes().filter((v) => v.meta && v.meta.requiresAuth);

const defaultActive = computed(() => route.path || treeData.value[0].path)
const isCollapse = ref(false)
</script>


修改布局文件

1717569146435.png

运行测试

1717569238885.png

区分el-menu和el-sub-menu及el-menu-item

1717569380224.png

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 15:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 15:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 15:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 15:22:02       18 阅读

热门阅读

  1. 力士乐伺服电机MKD025B-144-KPO-KN

    2024-06-13 15:22:02       11 阅读
  2. 剧院售票小程序毕业设计源码

    2024-06-13 15:22:02       9 阅读
  3. Golang:使用Blackfriday实现Markdown 转html

    2024-06-13 15:22:02       8 阅读
  4. 向https地址发送请求失败报错

    2024-06-13 15:22:02       5 阅读
  5. 注册用户如何防止缓存穿透?

    2024-06-13 15:22:02       5 阅读
  6. css3新增伪类有哪些?

    2024-06-13 15:22:02       8 阅读
  7. monitor-zabbix

    2024-06-13 15:22:02       5 阅读