解决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 相关文章推荐
阻止子元素继承父元素事件具体思路及实现
May 02 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
Feb 16 Javascript
浅谈js中对象的使用
Aug 11 Javascript
react-router JS 控制路由跳转实例
Jun 15 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
Dec 26 Javascript
vue项目中公用footer组件底部位置的适配问题
May 10 Javascript
angularjs结合html5实现拖拽功能
Jun 25 Javascript
vue 详情跳转至列表页实现列表页缓存
Mar 27 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
vue v-for出来的列表,点击某个li使得当前被点击的li字体变红操作
Jul 17 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
DOTA2 探索永无止境 玩家自创强悍插眼攻略
2020/04/20 DOTA
使用PHP遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php获取POST数据的三种方法实例详解
2016/12/20 PHP
js 获取后台的字段 改变 checkbox的被选中的状态 代码
2013/06/05 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
javascript操纵OGNL标签示例代码
2014/06/16 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
Canvas + JavaScript 制作图片粒子效果
2017/02/08 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
js实现简单的秒表
2020/01/16 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
python正则分组的应用
2013/11/10 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
工商管理毕业生推荐信
2013/12/24 职场文书
培训专员岗位职责
2014/02/26 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
纪念一二九运动演讲稿
2014/09/16 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
司机岗位职责
2015/02/04 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
环保主题班会教案
2015/08/13 职场文书