解决vue路由name同名,路由重复的问题


Posted in Javascript onAugust 05, 2020

在项目中,想让路由后缀为空,或者index的时候,都跳转到路由为index的页面,于是在router中如下配置

routes: [{
  path: '/',
  name: 'index',
  component: () => import('@/components/index').then(m => m.default)
 },{
  path: '/index',
  name: 'index',
  component: () => import('@/components/index').then(m => m.default)
 }]

但是浏览器告警信息:

[vue-router] Duplicate named routes definition: { name: "index", path: "/index" }

因为路由重复添加,name一样造成,利用redirect重定向

routes: [{
  path: '/',
  redirect: {
   name: index
  }
  // name: 'index',
  // component: () => import('@/components/index').then(m => m.default)
 },{
  path: '/index',
  name: 'index',
  component: () => import('@/components/index').then(m => m.default)
 }]

补充知识:vue路由使用踩坑点:当动态路由再使用路由name去匹配跳转时总是跳转到根路由的问题

闲话少说,直接问题:

之前我的路由时这么写的

{
  path:'/serverInfo/:id',
  name:'serverInfo',
  component:() => import('@/views/serverRequest/SRInfo')
}

但是呢,头部做了个通知面板,代码如下:

<el-popover
     popper-class="messagePopper"
     placement="bottom"
     width="300"
     v-model="visiblity"
     trigger="click">
     <div class="messageBox">
      <div class="title">通知</div>
      <div class="message" v-if="messageData.length === 0">暂无通知</div>
      <div v-else>
      <div class="message" v-for="item in messageData" @click="readMessage(item.id)">
       <router-link :to="{
        name:item.route,
        params:{
         messageId:item.rid
        }
       }">{{'【' + item.message + '】'}}</router-link>
       <span>{{item.message_time}}</span>
      </div>
      </div>
     </div>
     <el-badge slot="reference" :value="messageData.length" class="item" :hidden="messageData.length === 0">
      <i class="messageStyle iconfont icon-tongzhi"></i>
      <span class="messageText">通知</span>
     </el-badge>
    </el-popover>

看一下router-link部分通过name去跳转,并传递参数。

然后我们可以看一下页面,order路由正常的,serverInfo就不正常了

解决vue路由name同名,路由重复的问题

我们看下后台返回数据也是正常的有路由名字,这就很惆怅了。

然后我们看下order的路由,order没有动态路由匹配。

{
path:'/order',

name:'order',

component:() => import('@/views/system/order')
},

所以初步猜测:是不是有动态路由匹配时,通过路由name去跳转,就会匹配不到全路径,而跑到根路由去呢?

我们现在把serverInfo路由改一下:去掉动态路由匹配

{
  path:'/serverInfo',
  name:'serverInfo',
  component:() => import('@/views/serverRequest/SRInfo')
}

改了之后,我们之前使用到的路由跳转的地方也得改下。我们需要传参数的地方就通过下面这种去传,也是一样的

// <router-link :to="'/serverInfo/'+scope.row.srid"> 
<router-link :to="{name:'serverInfo',params:{id:scope.row.srid}}">
<span>{{scope.row.srid}}</span>
</router-link>

改成这样只会就发现一切正常了

解决vue路由name同名,路由重复的问题

所以总结一下:

当使用动态路由匹配的时候,再想通过name去跳转是会有问题的。当你想用路由name去跳转的时候,就不要使用动态路由匹配,需要传参数,就使用params去传递参数。

以上这篇解决vue路由name同名,路由重复的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
实用的Jquery选项卡TAB示例代码
Aug 28 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
JS 获取滚动条高度示例代码
Oct 24 Javascript
使用js判断当前时区TimeZone是否是夏令时
Feb 23 Javascript
jQuery中die()方法用法实例
Jan 19 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
Apr 15 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
jQuery视差滚动效果网页实现方法经验总结
Sep 29 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
uploader秒传图片到服务器完整代码
Apr 22 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
Jul 25 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
Aug 05 #Javascript
Vue 同步异步存值取值实现案例
Aug 05 #Javascript
详解vue路由
Aug 05 #Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
Aug 05 #Javascript
vant 自定义 van-dropdown-item的用法
Aug 05 #Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 #Javascript
Vue的v-model的几种修饰符.lazy,.number和.trim的用法说明
Aug 05 #Javascript
You might like
使用数据库保存session的方法
2006/10/09 PHP
缓存技术详谈―php
2006/12/14 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
深入浅出php socket编程
2015/05/13 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
javascript this用法小结
2008/12/19 Javascript
extjs 学习笔记(二) Ext.Element类
2009/10/13 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
JS根据key值获取URL中的参数值及把URL的参数转换成json对象
2015/08/26 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
使用sessionStorage解决vuex在页面刷新后数据被清除的问题
2018/04/13 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
在Python的循环体中使用else语句的方法
2015/03/30 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
个人自我鉴定
2013/11/07 职场文书
科研先进个人典型材料
2014/01/31 职场文书
早会主持词
2014/03/17 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
推普周国旗下讲话稿
2014/09/21 职场文书
幼儿园教师师德表现自我评价
2015/03/05 职场文书
创业计划书之校园超市
2019/09/12 职场文书