解决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 相关文章推荐
JavaScript 三种创建对象的方法
Oct 16 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
了解了这些才能开始发挥jQuery的威力
Oct 10 Javascript
JS实现侧悬浮浮动实例代码
Nov 29 Javascript
javascript计算星座属相(十二生肖属相)示例代码
Jan 09 Javascript
基于jQuery的判断iPad、iPhone、Android是横屏还是竖屏的代码
May 11 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
JavaScript获取当前url根目录(路径)
Jun 17 Javascript
vue.js表格分页示例
Oct 18 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 Javascript
详解webpack babel的配置
Jan 09 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
Feb 16 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
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
php格式化时间戳显示友好的时间实现思路及代码
2014/10/23 PHP
php-msf源码详解
2017/12/25 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
checkbox勾选判断代码分析
2014/06/11 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
Jquery 效果使用详解
2015/11/23 Javascript
Bootstrap每天必学之媒体对象
2015/11/30 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
NodeJS 将文件夹按照存放路径变成一个对应的JSON的方法
2018/10/17 NodeJs
iview的table组件自带的过滤器实现
2019/07/12 Javascript
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
python pandas移动窗口函数rolling的用法
2020/02/29 Python
python如何使用腾讯云发送短信
2020/09/17 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
与世界上最好的跑步专业品牌合作:Fleet Feet
2019/03/22 全球购物
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
学生个人求职自荐信格式
2013/09/23 职场文书
求职推荐信
2013/10/28 职场文书
土木工程求职信
2014/05/29 职场文书
五水共治一句话承诺
2014/05/30 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
2015年教师见习期工作总结
2015/05/20 职场文书
报案材料怎么写
2015/05/25 职场文书
三八节活动简报
2015/07/20 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书
php实例化对象的实例方法
2021/11/17 PHP
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript
Python实现简单得递归下降Parser
2022/05/02 Python
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang