在Vue Router中可以通过配置<router-view>
组件的keep-alive
属性来保持组件状态,以达到在不同路由之间切换时保持组件状态的目的。同时,可以使用<router-link>
组件的exact
属性来指定是否精确匹配路由路径。
针对您的问题,可以通过以下步骤实现父路由默认选中第一个子路由,切换子路由时父路由仍然激活高亮效果:
- 在父路由的组件中使用
<router-view>
组件,并设置keep-alive
属性,如下所示:
<router-view keep-alive></router-view>
- 在父路由的组件中通过
$route
对象获取当前路由路径,然后使用<router-link>
组件的exact
属性指定是否精确匹配路由路径。同时,为了让子路由切换时父路由仍然激活高亮效果,需要在父路由的<router-link>
组件上添加exact-active-class
属性,如下所示:
<router-link to="/parent/child1" exact :class="{active: $route.path === '/parent/child1'}" exact-active-class="active">Child 1</router-link>
<router-link to="/parent/child2" exact :class="{active: $route.path === '/parent/child2'}" exact-active-class="active">Child 2</router-link>
- 在父路由的组件的
mounted
生命周期钩子中,使用$router.push()
方法将路由重定向到第一个子路由的路径,即可实现父路由默认选中第一个子路由的效果,如下所示:
mounted() {
this.$router.push('/parent/child1');
}
- 在父路由的组件的样式中添加
.active
类的样式,以实现激活高亮效果,如下所示:
.active {
color: red;
}