element-plus menu 设置default-active 页面刷新时 导航高亮

1、绑定default-active, index值为路由path (resourceUrl)
<el-menu
    :default-active="activeIndex"
    class="el-menu-demo"
    mode="horizontal"
    :router="true"
    @select="handleSelect"
  >
    <el-menu-item index="2dmap">首页</el-menu-item>
    <el-sub-menu :index="item.resourceUrl" v-for="item in menuResources" :key="item.resourceUrl">
      <template #title>{{item.resourceName}}</template>
      <el-menu-item v-for="route in item.menuChildren" :key='route.resourceUrl' :index="route.resourceUrl">{{route.resourceName}}</el-menu-item>
    </el-sub-menu>
    <el-menu-item></el-menu-item>
  </el-menu>
2、只需要在ref时把 $route.path绑定到响应数据源中,路由改变时切换高亮导航条,页面刷新时也会去获取 *自行动态改变activeIndex.value的值亲测无效
// setup
// 正确方式
const internalInstance = useCurrentInstance()
const activeIndex:Ref<string> = ref<string>(internalInstance.proxy.$route.path.split('/')[1])
// 错误方式
const activeIndex:Ref<string> = ref<string>('2dmap')
activeIndex.value = 'otherpath' //手动改变 无效
useCurrentInstance 方法
import { ComponentInternalInstance, getCurrentInstance } from 'vue'
export default function useCurrentInstance (): Record<string, any> {
  const { appContext } = getCurrentInstance() as ComponentInternalInstance
  const proxy = appContext.config.globalProperties
  return {
    proxy
  }
}
补充

使用useRouter获取路由信息

import { useRouter } from 'vue-router'
// setup
const { currentRoute } = useRouter()
const activeIndex:Ref<string> = ref<string>(currentRoute.value.path.split('/')[1])
GitHub 加速计划 / el / element-plus
23.88 K
15.38 K
下载
element-plus/element-plus: Element Plus 是一个基于 Vue 3 的组件库,提供了丰富且易于使用的 UI 组件,用于快速搭建企业级桌面和移动端的前端应用。
最近提交(Master分支:1 个月前 )
c1863f50 2 个月前
b55163fd 3 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐