解决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 相关文章推荐
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
javascript sudoku 数独智力游戏生成代码
Mar 27 Javascript
常用js字符串判断方法整理
Oct 18 Javascript
JQuery下拉框应用示例介绍
Apr 23 Javascript
使用js Math.random()函数生成n到m间的随机数字
Oct 09 Javascript
$.extend 的一个小问题
Jun 18 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
详解三种方式解决vue中v-html元素中标签样式
Nov 22 Javascript
js实现每日签到功能
Nov 29 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 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
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
JSON语法五大要素图文介绍
2012/12/04 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
Javascript随机标签云代码实例
2016/06/21 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
2018/01/24 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
2018/03/21 Javascript
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
python实现Zabbix-API监控
2018/09/17 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
澳大利亚电商Catch新西兰站:Catch.co.nz
2020/05/30 全球购物
会计学个人自荐信模板
2013/12/13 职场文书
国际贸易个人求职信范文
2014/01/04 职场文书
《草虫的村落》教学反思
2014/02/16 职场文书
田径运动会开幕式及主持词
2014/03/28 职场文书
中班幼儿评语大全
2014/04/30 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
出纳试用期自我评价
2015/03/10 职场文书
python实现自动化群控的步骤
2021/04/11 Python
python 如何做一个识别率百分百的OCR
2021/05/29 Python
SQL Server使用导出向导功能
2022/04/08 SQL Server