vue组件的路由高亮问题解决方法


Posted in Vue.js onMay 11, 2021

前言

之前我对于路由的高亮都是使用缓存,给他的所有路由遍历一遍,每点击一下的时候,给他的当前值高亮,赋值active。后来发现一刷新就不行,高亮的就变成默认值0了,这里主要是讲这个问题的解决办法。

第一种是通过这样的添加类:

.router{
        font: 12px/40px '微软雅黑';
        background: pink;
        background: pink;
        color: white;
        cursor: pointer;
        text-align: center;
        display: inline-block;
        width: 40px;
        background: pink;
        &.isActive{
            background: blue;
            color:red;
        }
    }

第二种是监听path:

原本的代码是这样的:

<template>
<div id="main">
    <ul style="height:40px;background:pink;">
        <li  class="router" v-for="(item,index) in items" :key="index" style="float:left;" :class="item.isActive?'isActive':''" @click="routerTo(item,index)">
            <span >{{item.name}}</span>
        </li>
    </ul>
    <router-view></router-view>
    </div>
    
</template>
<script>
    export default {
        data () {
            return {
                activeIndex2:'0',
                items:[
                    {name:'twoPage',code:'twoPage',path:'/twoPage',defaultIcon:require('@/assets/icon/BehaviorRank-default.png'),
                    activeIcon:require('@/assets/icon/behaviorrank-active.png'),isActive:true},
                    {name:'three',code:'three',path: '/three',defaultIcon:require('@/assets/icon/ChannelAllocation-default.png'),
                    activeIcon:require('@/assets/icon/ChannelAllocation-active.png'),isActive:false},
                    {name:'four',code:'four',path:'/four',defaultIcon:require('@/assets/icon/myReport-default.png'),
                    activeIcon:require('@/assets/icon/myReport-active.png'),isActive:false},
                ],
            }
        },
        methods:{
            routerTo(item,index) {
                 for (let i = 0; i < this.items.length; i++) {
                    this.items[i].isActive=false
                    
                }
                this.items[index].isActive=true
                this.$router.push({name:item.name})
               
            },
        }
    }
</script>
<style lang='less'>
#main{
    .router{
        font: 12px/40px '微软雅黑';
        background: pink;
        background: pink;
        color: white;
        cursor: pointer;
        text-align: center;
        display: inline-block;
        width: 40px;
        background: pink;
        
    }
    .isActive{
            background: blue;
            color:red;
        }
    
}

</style>

效果:

vue组件的路由高亮问题解决方法

但如果点击刷新会这样:高亮的Index跑到了初始化0的位置。

vue组件的路由高亮问题解决方法

如何解决这种问题

有一种方法是通过缓存sessionStorage。每次点击一下就存入缓存,刷新就从变量取值,变量没有值就从缓存取值。但一直存一直取可能有的人觉得麻烦。

还有一种方法就是初始化的时候获取路由,根据不同的路由激活对应的导航

created(){
            // var path=window.location.hash.slice(2);//没有参数时这种写法也可以,不推荐
            var path=this.$route.name//推荐这种
            console.log(path)
            if(path){
                for (let i = 0; i < this.items.length; i++) {
                    this.items[i].isActive=false
                }
                switch(path){
                    case 'twoPage':
                    this.items[0].isActive=true;
                    break;
    
                    case 'three':
                    this.items[1].isActive=true;
                    break;
    
                    case 'four':
                    this.items[2].isActive=true;
                    break;
                }
            }
        },

附:vue点击当前路由高亮的具体代码

 

功能展示:

vue组件的路由高亮问题解决方法

组件代码:

标签上加exact

.router-link-active{
 background: rgba(255,255,255,0.8);
 color: gray;
 }

 

<template>
 <nav>
  <ul>
  <li>
   <router-link to="/" exact>博客</router-link>
   <router-link to="/AddBlog" exact>写博客</router-link>
  </li>
  </ul>
 </nav>
</template>
 
<script>
 export default {
  name: "bolgheader"
 }
</script>
 
<style scoped>
 ul{
 list-style-type: none;
 text-align: center;
 margin:0;
 }
 li{
 display: inline-block;
 margin:0 10px;
 }
 a{
 color:rgb(102, 119, 204);
 text-decoration: none;
 padding:12px;
 border-radius: 5px;
 font-size:20px;
 }
 nav{
 background: #eee;
 padding: 30px 0;
 margin-bottom: 40px;
 }
 .router-link-active{
 background: rgba(255,255,255,0.8);
 color: gray;
 }
</style>

总结

到此这篇关于vue组件的路由高亮问题解决方法的文章就介绍到这了,更多相关vue组件的路由高亮内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue实现表格合并功能
Dec 01 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
vue 实现图片懒加载功能
Dec 31 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
如何在Vue项目中添加接口监听遮罩
Jan 25 Vue.js
vue监听键盘事件的相关总结
Jan 29 Vue.js
Vue图片裁剪组件实例代码
Jul 02 Vue.js
Vue3.0 手写放大镜效果
Jul 25 Vue.js
一篇文章告诉你如何实现Vue前端分页和后端分页
Feb 18 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue实现Toast组件轻提示
Apr 10 Vue.js
vue特效之翻牌动画
Apr 20 Vue.js
Vue通过懒加载提升页面响应速度
Vue详细的入门笔记
如何理解Vue前后端数据交互与显示
Vue实现下拉加载更多
May 09 #Vue.js
如何使用vue3打造一个物料库
vue完美实现el-table列宽自适应
关于Vue Router的10条高级技巧总结
May 06 #Vue.js
You might like
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
PHP实现浏览器格式化显示XML的方法示例
2019/01/22 PHP
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
js鼠标左右键 键盘值小结
2010/06/11 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
js的2种继承方式详解
2014/03/04 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
JS数组交集、并集、差集的示例代码
2017/08/23 Javascript
mui框架移动开发初体验详解
2017/10/11 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
bootstrap+spring boot实现面包屑导航功能(前端代码)
2019/10/09 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
如何在微信小程序中使用骨架屏的步骤
2020/06/12 Javascript
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
python常见排序算法基础教程
2017/04/13 Python
python验证码识别的示例代码
2017/09/21 Python
解决python selenium3启动不了firefox的问题
2018/10/13 Python
对python中的乘法dot和对应分量相乘multiply详解
2018/11/14 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
浅谈python锁与死锁问题
2020/08/14 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
2020/09/16 Python
购买一个高级域名:BuyDomains
2018/03/11 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
高三霸气励志标语
2014/06/24 职场文书
乌镇导游词
2015/02/02 职场文书
结婚老公保证书
2015/02/26 职场文书
培训督导岗位职责
2015/04/10 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
婚礼长辈答谢词
2015/09/29 职场文书
预防职务犯罪警示教育心得体会
2016/01/15 职场文书