Если вы хотите добавить класс к своей активной ссылке маршрута, просто используйте свойство active-class
или exact-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
Edit
<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>
И в вас component JS у вас есть 2 варианта:
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, полагаясь на active-class:
<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>