2 回答

TA貢獻1821條經驗 獲得超6個贊
如果你想將一個類添加到你的活動路由鏈接,只需使用active-classorexact-active-class屬性https://router.vuejs.org/api/#active-class:
<router-link
to="/dashboard"
class="m-menu__link"
active-class="yourClass"
>
</router-link>
<route-link>請注意,您可以將組件呈現為<li>元素,因此只需將 li 類添加到 router-link 組件
編輯
<li
class="m-menu__item m-menu__item--active"
aria-haspopup="true"
id="dashboard"
@click="toggleMenu('dashboard')"
:class="{ 'my-active-class': isDashboardActive }"
>
<router-link to="/dashboard" class="m-menu__link">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">{{ $t("Dashboard") }}</span>
</span>
</span>
</router-link>
</li>
在你的組件 JS 中,你有兩個選擇:
data: () => ({
isDashboardActive: false
}),
watch:{
$route (to, from){
console.log(to.path);
this.isDashboardActive = true
}
},
或這個
computed: {
// if you use computed, you can remove data and watch
isDashboardActive () {
return this.$route.path === '/dashboard'
}
},
另一種保持相同 html 結構的選擇,依賴于活動類:
<router-link
class="m-menu__item m-menu__item--active"
aria-haspopup="true"
id="dashboard"
@click="toggleMenu('dashboard')"
to="/dashboard"
active-class="yourClass"
>
<a class="m-menu__link">
<i class="m-menu__link-icon flaticon-line-graph"></i>
<span class="m-menu__link-title">
<span class="m-menu__link-wrap">
<span class="m-menu__link-text">{{ $t("Dashboard") }}</span>
</span>
</span>
</a>
</li>

TA貢獻1846條經驗 獲得超7個贊
我可以像下面那樣做。
<li
class="m-menu__item"
:class="checkIsPathAndRoutePathSame('/dashboard') ? 'm-menu__item--active' : ''"
id="dashboard"
@click="toggleMenu('dashboard')"
>
<router-link to="/dashboard" class="m-menu__link">
</router-link>
</li>
data() {
return {
currentRoute: ''
};
},
watch:{
$route (to, from){
this.currentRoute = to.path;
}
},
mounted() {
this.currentRoute = this.$route.path;},
methods: {
checkIsPathAndRoutePathSame(path){
if(this.currentRoute === path){
return true;
}
}
}
添加回答
舉報