vue路由Router设置父路由默认选中第一个子路由,切换子路由让父路由激活高亮效果不会消失

news/2024/11/13 5:32:20/
javascript">import Vue from 'vue';
import VueRouter from 'vue-router';// 导入组件
import Home from '../views/Home.vue';
import Parent from '../views/Parent.vue';
import Child1 from '../views/Child1.vue';
import Child2 from '../views/Child2.vue';Vue.use(VueRouter);// 定义路由
const routes = [{path: '/',name: 'Home',component: Home,},{path: '/parent',name: 'Parent',component: Parent,children: [{path: '',name: 'Child1',component: Child1,},{path: 'child2',name: 'Child2',component: Child2,},],},
];// 创建路由实例
const router = new VueRouter({mode: 'history',routes,
});// 添加全局的导航守卫
router.beforeEach((to, from, next) => {if (to.matched.some(record => record.meta.keepAlive)) {// 如果路由配置中设置了 `keepAlive` 为 `true`,则将该路由缓存to.meta.isKeepAlive = true;} else {// 否则将该路由不缓存to.meta.isKeepAlive = false;}next();
});export default router;

定义了一个父级路由 /parent,并在该路由的子路由中设置了默认选中的子路由。在 Parent 组件中,你可以使用 <router-view> 标签来渲染子路由。

为了保持父路由高亮不消失,我们使用了全局的导航守卫。在导航守卫中,我们判断如果子路由设置了 keepAlive 为 true,则将该路由缓存。这样,在切换子路由时,父路由的高亮状态将保持不变。


可以使用&lt;router-link>标签中的exact-active-class属性和父路由的redirect属性来实现。

首先,在父路由的redirect属性中设置默认重定向到第一个子路由:

{path: '/parent',redirect: '/parent/child1',// 其他配置
}

然后,在父路由的&lt;router-link>标签中设置exact-active-class属性为要使用的激活类名:

<router-link to="/parent/child1" exact-active-class="active">Child1</router-link>
<router-link to="/parent/child2" exact-active-class="active">Child2</router-link>

最后,使用以下CSS样式来保持父路由的激活状态:

.active {/* 将子路由的激活类名设置为与父路由相同 *//* 这样切换子路由时父路由的激活状态就会保持不变 */color: red;
}.active-link {/* 将父路由的激活类名设置为与子路由相同 *//* 这样父路由的激活状态就会与当前子路由的激活状态相同 */color: red;
}

这样,当进入父路由时,默认会重定向到第一个子路由,并将其激活状态设置为父路由的激活状态。当切换子路由时,父路由的激活状态会保持不变,并继续使用子路由的激活类名来保持子路由的激活状态。


 在Vue Router中可以通过配置&lt;router-view>组件的keep-alive属性来保持组件状态,以达到在不同路由之间切换时保持组件状态的目的。同时,可以使用&lt;router-link>组件的exact属性来指定是否精确匹配路由路径。

针对您的问题,可以通过以下步骤实现父路由默认选中第一个子路由,切换子路由时父路由仍然激活高亮效果:

在父路由的组件中使用&lt;router-view>组件,并设置keep-alive属性,如下所示:

<router-view keep-alive></router-view>

在父路由的组件中通过$route对象获取当前路由路径,然后使用&lt;router-link>组件的exact属性指定是否精确匹配路由路径。同时,为了让子路由切换时父路由仍然激活高亮效果,需要在父路由的&lt;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()方法将路由重定向到第一个子路由的路径,即可实现父路由默认选中第一个子路由的效果,如下所示:

javascript">mounted() {this.$router.push('/parent/child1');
}

在父路由的组件的样式中添加.active类的样式,以实现激活高亮效果,如下所示:

.active {color: red;
}


http://www.ppmy.cn/news/1519487.html

相关文章

Mac怎么安装谷歌浏览器

谷歌浏览器凭借其强大的功能&#xff0c;成为广大用户的首选浏览器。其中Mac用户在进行下载和安装时&#xff0c;可能会出现一些困难。为了帮助大家顺利的在Mac系统中成功安装&#xff0c;下面就给大家详细分享Mac安装谷歌浏览器指南&#xff0c;希望对你有所帮助。 Mac安装谷歌…

备考AMC10美国数学竞赛2024:吃透1250道真题和知识点(持续)

有什么含金量比较高的初中生数学竞赛吗&#xff1f;美国数学竞赛AMC10是个不错的选择。那么&#xff0c;如何备考AMC10美国数学竞赛呢&#xff1f;做真题&#xff0c;吃透真题和背后的知识点是备考AMC8、AMC10有效的方法之一。 今天是2024年9月2日&#xff0c;距离2024年AMC10…

数学基础 -- 线性代数之向量空间

向量空间与基变换 1. 向量空间的定义 向量空间&#xff08;Vector Space&#xff09;是指一组具有向量加法和数乘运算的元素的集合&#xff0c;并且这些运算满足以下公理&#xff1a; 加法封闭性&#xff1a;对于任意两个向量 u u u 和 v v v&#xff0c;它们的和 u v u…

Google Earth Engine(GEE)——土地覆盖分类的方法环境遥感之图像分类(2)

目录 简介 加载上次的分类 结果 改进分类 简介 本实验的目的是加深你对图像分类过程的理解。 加载上次的分类 我在下面提供了完整代码,但请记住,需要手动收集训练数据并分配土地覆盖属性。 //过滤时间窗口、空间位置和云层覆盖的图像集合 var image = ee.Image(ee.Image…

django企业开发实战-学习小结1

开发准备 编码规范 整体规范 控制台执行import this回显就是py社区推荐的整体规范 py编码规范 缩进 推荐使用四个空格做为缩进&#xff0c;py3不允许空格和tab混用&#xff0c;优先建议使用空格 import 一个import的规范&#xff0c;import分三部分&#xff0c;先后分别是…

RT-DETR+Sort 实现目标跟踪

在前一篇博客中&#xff0c;博主介绍了利用YOLOv8与Sort算法实现目标跟踪&#xff0c;在今天这篇博客中&#xff0c;博主将利用RT-DETR算法与Sort算法相结合&#xff0c;从而实现目标跟踪。。 这里博主依旧是采用ONNX格式的模型文件来执行推理过程&#xff0c;由于Sort算法是基…

学习指纹浏览器 处理美团mtgsig1.2 环境检测

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 有相关问题请第一时间头像私信联系我…

【STM32】IIC

超级常见的外设通信方式&#xff0c;一般叫做I方C。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己的嵌入式学习之路-CSDN博客 目录 1 基本概念 1.1 总线结构 1.2 IIC协议 1.3 软件模拟IIC逻辑 2 AT24C02 2.1 设备地址与…