antdesign pro vue prolayout如何手动设置一个菜单高亮
时间: 2023-10-09 16:17:22 浏览: 116
Vue 菜单栏点击切换单个class(高亮)的方法
在Ant Design Pro Vue中,可以手动设置一个菜单高亮。具体步骤如下:
1. 在你的菜单列表中,为每个菜单项添加一个唯一的标识符,例如:key属性。
```
{
path: '/dashboard',
name: 'dashboard',
meta: { title: 'dashboard', icon: 'dashboard', key: 'dashboard' },
component: () => import('@/views/dashboard/index.vue')
},
```
2. 在你的布局组件中,使用`<Menu>`组件,设置`default-selected-keys`属性为当前选中的菜单项的key值。
```
<template>
<div class="pro-layout">
<SiderMenu :menus="menus" :collapsed="collapsed" :theme="theme" :isMobile="isMobile" />
<div class="pro-layout__content">
<div class="pro-layout__header">
<Header :menus="menus" :collapsed="collapsed" :theme="theme" :isMobile="isMobile" />
</div>
<div class="pro-layout__main">
<div class="pro-layout__container">
<div class="pro-layout__content-wrap">
<transition name="fade-transform" mode="out-in">
<router-view v-if="$route.meta.keepAlive" :key="$route.fullPath" />
<keep-alive v-else>
<router-view :key="$route.fullPath" />
</keep-alive>
</transition>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import SiderMenu from '@/components/SiderMenu'
import Header from '@/components/Header'
export default {
name: 'ProLayout',
components: {
SiderMenu,
Header
},
computed: {
menus() {
// return your menu list
},
collapsed() {
// return whether the menu is collapsed
},
theme() {
// return the theme of the menu
},
isMobile() {
// return whether the device is a mobile device
}
},
mounted() {
this.setMenuActive()
},
watch: {
$route() {
this.setMenuActive()
}
},
methods: {
setMenuActive() {
const key = this.$route.meta.key
if (key) {
this.$nextTick(() => {
const menu = this.$refs.siderMenu.$el.querySelector(`.ant-menu-item[data-key="${key}"]`)
if (menu) {
menu.click()
}
})
}
}
}
}
</script>
```
3. 在布局组件的`mounted`和`$route`的`watch`钩子函数中,调用`setMenuActive`方法,该方法会获取当前路由的meta信息中的key值,然后在菜单列表中查找相应的菜单项,并模拟点击该菜单项,将其高亮显示。
以上是手动设置一个菜单高亮的步骤。
阅读全文