广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue组件的路由高亮问题解决方法
  • 781
分享到

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

2024-04-02 19:04:59 781人浏览 薄情痞子
摘要

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

前言

之前我对于路由的高亮都是使用缓存,给他的所有路由遍历一遍,每点击一下的时候,给他的当前值高亮,赋值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>

效果:

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

如何解决这种问题

有一种方法是通过缓存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点击当前路由高亮的具体代码

功能展示:

组件代码:

标签上加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组件的路由高亮内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: vue组件的路由高亮问题解决方法

本文链接: https://www.lsjlt.com/news/125621.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue组件的路由高亮问题解决方法
    前言 之前我对于路由的高亮都是使用缓存,给他的所有路由遍历一遍,每点击一下的时候,给他的当前值高亮,赋值active。后来发现一刷新就不行,高亮的就变成默认值0了,这里主要是讲这个问...
    99+
    2022-11-12
  • 如何解决vue组件路由高亮的问题
    这篇文章给大家分享的是有关如何解决vue组件路由高亮的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue是什么Vue是一套用于构建用户界面的渐进式JavaScript框架,Vue与其它大型框架的区别是,使用...
    99+
    2023-06-15
  • 解决vue路由组件vue-router实例被复用问题
    最近在开发过程中遇到如下问题: 当前路由是这样的 http://127.0.0.1:3010/orderkeywords=22 只改变keywords的值,路由不跳转 http://...
    99+
    2022-11-13
  • vue路由组件vue-router实例被复用问题怎么解决
    本文小编为大家详细介绍“vue路由组件vue-router实例被复用问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue路由组件vue-router实例被复用问题怎么解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-02
  • vue router路由嵌套不显示问题的解决方法
    这篇文章给大家分享的是有关vue router路由嵌套不显示问题的解决方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。vue router路由嵌套不显示问题的解决方法,具体内容...
    99+
    2022-10-19
  • 如何解决vue router动态路由下让每个子路由都是独立组件的问题
    这篇文章主要介绍如何解决vue router动态路由下让每个子路由都是独立组件的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!vue-router 之动态路由vue-router...
    99+
    2022-10-19
  • springcloud gateway无法路由问题的解决
    目录前言描述问题分析原因springcloud gateway 的pom排除web解决思路独立的springcloud gateway总结前言 昨天小伙伴问我springcloud ...
    99+
    2023-05-20
    springcloud gateway 路由 springcloud gateway无法路由 springcloud实战
  • 如何解决vue中路由映射的问题
    小编给大家分享一下如何解决vue中路由映射的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在项目中遇到了一个问题,明明在Ro...
    99+
    2022-10-19
  • Vue路由自动添加#的问题及解决
    目录Vue路由自动添加#Vue路由去除 链接 / 前面的 #Vue路由自动添加# 在使用VueRouter时,配置了几个路由规则 尝试在浏览器中输入路由地址(/order,/per...
    99+
    2022-11-13
  • vue父组件调用子组件方法报错问题及解决
    目录vue父组件调用子组件方法报错vue父组件调用子组件方法及遇到的问题vue父组件调用子组件方法报错 在父组件定义了一个tab标签页,每一个标签页下面都调用不同的组件, 如下图所示...
    99+
    2022-11-13
  • vue子组件created方法不执行问题及解决
    目录vue子组件created方法不执行解决方法created和mounted方法没执行问题vue子组件created方法不执行 近期做了一个项目 里面有一个树形菜单,将数据写在 j...
    99+
    2022-11-13
    vue子组件 created方法不执行 子组件created方法
  • Win8系统无法连接到路由器问题的解决方法
    Win8系统无法连接到路由器怎么办?近日一位朋友在Win8.1系统升级到Win10后无法连接到路由器,退回Win8.1系统发现路由器仍然连接不了。这有可能是在更换系统的过程中网卡驱动出现兼容性的问题,可以用...
    99+
    2022-06-04
    解决方法 连接到 路由器
  • vue跳转同一路由报错的问题及解决
    目录vue跳转同一路由报错编程式路由跳转多次点击报错问题问题分析解决方法总结vue跳转同一路由报错 vue中,如果跳转同一个页面路由,虽不会影响功能,但是会报错 原因:路由的pus...
    99+
    2023-05-14
    vue跳转同一路由报错 vue跳转路由报错 vue跳转路由
  • 详解Vue 路由组件传参的 8 种方式
    我们在开发单页面应用时,有时需要进入某个路由后基于参数从服务器获取数据,那么我们首先要获取路由传递过来的参数,从而完成服务器请求,所以,我们需要了解路由传参的几种方式,以下方式同 v...
    99+
    2022-11-11
  • 如何解决vue spa应用中的路由缓存问题
    这篇文章将为大家详细讲解有关如何解决vue spa应用中的路由缓存问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。单页面应用中的路由缓存问题通常我们在进行页面前后退时,...
    99+
    2022-10-19
  • vue实现tab路由切换组件的方法实例
    前言 本文介绍的是使用vue自带的vue-router.js路由实现分页切换功能,下面话不多说了,来一起看看详细的实现代码吧 实现图片如下 下列为实现代码 css: *{ ...
    99+
    2022-11-12
  • SpringbootRetry组件@Recover失效问题解决方法
    目录背景问题复现问题解决背景 在使用springboot的retry模块时,你是否出现过@Recover注解失效的问题呢?下面我会对该问题进行复现,并且简要的说下解决方法。 问题复现...
    99+
    2022-11-12
  • Vue Router解决多路由复用同一组件页面不刷新问题(场景分析)
    目录简介问题复现代码测试解决方案方案1:导航守卫方案2:watch监听$route方案3:父组件router-view指定key其他网址简介 说明 本文介绍如何解决Vue的多路由复用...
    99+
    2022-11-13
  • 如何解决vue-router路由参数刷新消失的问题
    这篇文章主要为大家展示了“如何解决vue-router路由参数刷新消失的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决vue-router路由参数刷...
    99+
    2022-10-19
  • vue3销毁组件方法及问题解决方案
    问题描述:使用elementplus的dialog,当关闭弹窗后不刷新页面,直接再次打开发现弹窗中还存留上一次的数据。尝试定义关闭事件,或者使用api中提供的属性destroy-on...
    99+
    2023-05-17
    vue3 销毁组件 vue组件销毁
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作