ElementPlus 侧边栏路由设置

在使用ElementPlus和Vue.js开发时,遇到侧边栏路由高亮与实际子路由页面不匹配的问题。文章指出,通过修改<el-menu>的props,添加`:default-active`属性,并在<el-menu-item>上设置`:index`为路由地址,同时在<script setup></script>中处理路由变化,可以解决刷新后侧边栏选中状态错误的问题。对于含有el-sub-menu的情况,需要更改el-menu-item的index而非el-sub-menu的index以匹配路由。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果使用<router-link ></router-link>去包裹<el-menu-item></el-menu-item>会导致页面刷新之后,子路由页和侧边栏高亮文字的选中状态不匹配的问题

例如:侧边栏选中‘详情页’之后,刷新浏览器,侧边栏的选中状态会变成‘首页’,但是子路由页依然停留在详情页!

按照以下代码修复:

<template>
  <el-menu
    active-text-color="#409eff"
    background-color="#7270F5"
    class="el-menu-vertical-demo"
    :default-active="route.path" //点击浏览器的前进后退,侧栏的高亮会和子路由页同步
    text-color="#fff"
    :router="true" //开启路由
  >
    <div class="logo">LOGO</div>
      <el-menu-item index="/Main" > //index指向路由页
        <el-icon><icon-menu /></el-icon>
        <template #title>首页</template>
      </el-menu-item>
      <el-menu-item index="/Detail"> //index指向路由页
        <el-icon><Document /></el-icon>
        <template #title>详情</template>
      </el-menu-item>
      <el-menu-item index="/Charts"> //index指向路由页
        <el-icon><setting /></el-icon>
        <template #title>图形</template>
      </el-menu-item>
  </el-menu>
</template>

<script setup>
import { Document, Menu as IconMenu, Setting } from '@element-plus/icons-vue'
import { useRoute } from 'vue-router'

const route = useRoute()
</script>

对ElementPlus官网版本进行修改的地方是:

1.el-menu的

//从
default-active="2"
//改为
:default-active="route.path"

2.el-menu添加了

:router="true"

3.el-menu-item的

//从
index="2"
//改为
index="/Main" //路由页的路径

4.<script setup></script > 内添加:

import { useRoute } from 'vue-router'
const route = useRoute()

5.如下图所示,现在刷新页面,子路由页显示详情页内容,左侧menu高亮文字停留在‘详情’ ,高亮文字不会跳转到‘首页’了。

6.注意!如果用到了el-sub-menu,应该将el-sub-menu内el-menu-item的index值更改为路由地址,而不是更改el-sub-menu的index值!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值