【Element Plus】Menu组件:url访问页面时高亮对应菜单栏

文章目录

场景

使用Element Plus的Menu 菜单 | Element Plus时,点击对应菜单会显示对应路由,此时会高亮选中菜单栏。但输入url访问对应路径,菜单栏不会默认高亮。

需求:url访问页面时高亮对应菜单栏。

代码

router:

javascript 复制代码
import { createRouter, createWebHistory } from 'vue-router'

export const routes = [
  {
    path: '',
    title: '功能Demo',
    // 父组件的component中要有<router-view></router-view>才会渲染子组件。实际上我们并不需要这个父组件
    children: [
      {
        path: '/shopping-link',
        name: 'shoppingLink',
        title: '复制链接弹出信息',
        component: () => import('@/views/shoppingLink.vue'),
      },
    ],
  },
]

const router = createRouter({
  history: createWebHistory(),
  routes: routes,
})

export default router

Menu:

javascript 复制代码
<template>
  <div class="menu">
    <el-menu
      active-text-color="#ffd04b"
      background-color="#545c64"
      class="el-menu-vertical-demo"
      text-color="#fff"
      :router="true"
    >
      <el-sub-menu v-for="item in routes" :index="item.path">
        <template #title>{{ item.title }}</template>
        <el-menu-item v-for="i in item.children" :index="i.path" :route="i.path" :key="i.path">
          {{ i.title }}
        </el-menu-item>
      </el-sub-menu>
    </el-menu>
  </div>
</template>
<script lang="ts" setup>
import { routes } from '@/router/index'

</script>

<style lang="less" scoped>
.menu {
  width: 200px;
  height: 100%;
  background-color: #545c64;
  .el-menu {
    border: none;
  }
}
</style>

解决

Menu API:default-active
default-active可以设置默认高亮的菜单。当default-active的值匹配上el-menu-itemindex时,对应el-menu-item会高亮。

我们这里菜单el-menu-itemindex是路径,因此:进入页面时,获取路径,赋值给default-active即可。

html 复制代码
    <el-menu
      active-text-color="#ffd04b"
      background-color="#545c64"
      class="el-menu-vertical-demo"
      text-color="#fff"
      :default-active="activePath" 
      :router="true"
    >
javascript 复制代码
import { ref, onMounted } from 'vue'
const activePath = ref('')

// 默认高亮
const getPath = () => {
  const path = location.pathname
  activePath.value = path
}

onMounted(() => {
  getPath()
})
相关推荐
桜吹雪2 分钟前
markstream-vue实战踩坑笔记
前端
南村群童欺我老无力.16 分钟前
Flutter应用鸿蒙迁移实战:性能优化与渐进式迁移指南
javascript·flutter·ci/cd·华为·性能优化·typescript·harmonyos
C_心欲无痕22 分钟前
nginx - 实现域名跳转的几种方式
运维·前端·nginx
花哥码天下25 分钟前
恢复网站console.log的脚本
前端·javascript·vue.js
LawrenceLan26 分钟前
Flutter 零基础入门(十二):枚举(enum)与状态管理的第一步
开发语言·前端·flutter·dart
Zoey的笔记本41 分钟前
「支持ISO27001的GTD协作平台」数据生命周期管理方案与加密通信协议
java·前端·数据库
北辰alk43 分钟前
Vue 的 nextTick:破解异步更新的玄机
vue.js
北辰alk43 分钟前
Vue 技巧揭秘:一个事件触发多个方法,你竟然还不知道?
vue.js
北辰alk1 小时前
Vue 中 computed 和 watch 的深度解析:别再用错了!
vue.js
奔跑的呱呱牛1 小时前
geojson-to-wkt 坐标格式转换
javascript·arcgis