ElementUI NavMenu导航菜单,跳转到包含子路由的路由时,导航菜单项不高亮显示

原因:当路由地址发生变化时,想要对应的高亮显示的菜单项发生变化,只需要设置 :default-active="$route.path"即可,但是当跳转的路由(父路由)包含子路由(即包含另一个导航时),且父路由设置了默认显示的子路由,此时父路由对应的菜单项就无法正常高亮显示,因为父路由设置了默认显示的子路由,当前路由地址就变成了子路由的地址,而菜单项高亮显示的路由对应的路由地址为父亲路由,而不是子路由所以无法高亮显示, 简单来说本来 /aaa 应该高亮显示菜单项,但现在实际的路由地址为 /aaa/bbb,所以无法高亮显示。
在这里插入图片描述

解决方法一:计算属性+$route.path+meta属性

① 在子路由中添加meta属性,设置需要高亮显示的路由地址

routes: [
  {
    path: '/aaa',
    component: AAA,
    redircct:'/aaa/bbb'
    children: [
      {
        path: 'bbb',
        component: BBB,
        meta: {
          activeMenu: '/aaa'
      }
    ]
  }
]

② 将default-active的值设置为计算属性

<el-menu
       class="sidebar-el-menu"
      :default-active="onRoutes"
      :collapse="collapse"
      text-color="#fff"
      active-text-color="#fff"
      background-color="#0e0d0a"
      unique-opened
      :router="true">
</el-menu>

③ 在计算属性中判断路由是否有meta属性,如果有则返回meta属性中设置的高亮显示的路由地址,如果没有则返回$route.path

export default {
  computed: {
    onRoutes() {
      const route = this.$route
      const { meta, path } = route
      // 在路由配置文件中设置自定义的路由路径到meta.activeMenu属性中,来控制菜单自定义高亮显示
      // meta中 有activeMenu 字段的子页面,都会显示高亮
      if (meta.activeMenu) {
        return meta.activeMenu
      }
      return path
    }
  }
}
方法二:非添加meta属性

将default-active的值设置为计算属性,然后在计算属性中直接判断 r o u t e . p a t h 是 否 是 以 / x x x 开 头 的 ( / x x x 是 父 路 由 的 路 由 地 址 ) , 如 果 是 以 / x x x 开 头 的 则 返 回 对 应 的 / x x x , 否 则 返 回 route.path是否是以 /xxx 开头的(/xxx 是父路由的路由地址),如果是以 / xxx 开头的则返回对应的 /xxx ,否则返回 route.path/xxx(/xxx)/xxx/xxx,route.path

<el-menu
       class="sidebar-el-menu"
      :default-active="onRoutes"
      :collapse="collapse"
      text-color="#fff"
      active-text-color="#fff"
      background-color="#0e0d0a"
      unique-opened
      :router="true">
</el-menu>
activeMenu() {
      // 获取path地址
      const path = this.$route.path
      // 判断path地址是否是以/xxx开头的(/xxx 为对应显示的一级路由的导航的路由地址)
      if (path.startsWith('/tools')) {
        // 如果是则返回一级路由的导航的路由地址
        return '/tools'
      }
      return path
    }
  • 9
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值