翻译过来就是,导航重复:避免了到当前位置的冗余导航。
简单来说就是重复跳转了相同路径

原因

触发这种情况是因为vue-router中引入了primise,当传递了多次重复的参数就会抛出异常,而这种问题是只有编程式导航才会出现的,因为这个问题在声明式导航中已经在内部解决了这个问题。

解决方案

路由的pushreplace都是VueRouter原型对象上的一个方法,所以每次路由跳转的时候都是通过这两个方法来实现,而这两个方法提供了三个参数,VueRouter.prototype.push(location,resolve,reject)分别是

  • 包含了路由以及携带参数的location
  • 成功失败回调 resolve reject

解决方案大致上就是两种,

  1. 一种是在 push | replace 的时候传递成功与失败的回调来处理异常。
    这种方式有一个缺点就是每次调用都需要传递成功与失败的回调有些麻烦。
    this.$router.push(
    { //第一个参数包含了路由跳转的一些信息 也就是router-link中的to,push方法中的location
    name:"home",
    params:{...},
    query:{...}
    },
    ($router)=>{}, //第二个参数是成功后的回调,可以通过第一个参数接收到$router对象
    (err)=>{console.log(err)} // 第三个参数是失败后的回调,导航重复会在此处抛出异常
    )
  2. 第二种是重写VueRouter原型对象中的push | replace方法,通过在上面新增一个判断来处理程序抛出的异常信息。
    这种方式修改过后再跳转路由就不需要再像第一种方式那样传递回调了
    //保存一份 push | replace 方法,方便接下来重写方法
    let originPush = VueRouter.prototype.push
    let originReplace = VueRouter.prototype.replace
    // 重写push方法
    VueRouter.prototype.push = function (location,resolve,reject){
    if (resolve && reject){ //如果传入了resolve和reject两个回调,则正常执行原来的push方法
    originPush.call(this,location,resolve,reject)
    }else{ // 否则就执行指定的方法
    originPush.call(this,location,($router)=>{},(err)=>{
    console.log(err)
    }} VueRouter.prototype.replace = function(...){...}

【Vue2】NavigationDuplicated: Avoided redundant navigation to current location:xxxxx的更多相关文章

  1. Vue Avoided redundant navigation to current location Error

    这个报错的根源就是vue-router组件,错误内容翻译一下是: Avoided redundant navigation to current location === 避免冗余导航到当前位置 这个 ...

  2. vue-router 报错、:Avoided redundant navigation to current location 错误、路由重复

    在用vue-router 做单页应用的时候重复点击一个跳转的路由会出现报错 这个报错是重复路由引起的只需在注册路由组建后使用下方重写路由就可以 const originalReplace = VueR ...

  3. Avoided redundant navigation to current location: "/users"

    问题产生的原因:在Vue导航菜单中,重复点击一个菜单,即重复触发一个相同的路由,会报错,但不影响功能 解决:在router的配置文件中加入如下代码: const originalPush = Rout ...

  4. Vue 路由跳转报错 Error: Avoided redundant navigation to current location: "/XXX".

    在router文件夹下的index.js中加入红色字体代码即可解决 import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(V ...

  5. Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to 解决办法

    main.js 配置如下 import Router from 'vue-router'; //路由导航冗余报错(路由重复) const originalPush = Router.prototype ...

  6. 【vue2】(一)基础使用

    [vue2](一)基础使用 MVVM MVVM: View - Model - ViewModel View: Dom层,视图层 Model: Plain JavaScript Objects,数据层 ...

  7. 【vue2】Style和Class,条件,列表渲染,双向数据绑定,事件处理

    目录 1.style和class 2. 条件渲染 2.1 指令 2.2 案例 3. 列表渲染 3.1 v-for:放在标签上,可以循环显示多个此标签 3.2 v-for 循环数组,循环字符串,数字,对 ...

  8. 【JavaScript】获取当前页的URL与window.location.href

    原文:http://blog.csdn.net/yongh701/article/details/45688743 版权声明:本文为博主原创文章,未经博主允许欢迎乱转载,标好作者就可以了!感谢欣赏!觉 ...

  9. 【转载】解决window.showModalDialog 模态窗口中location 打开新窗口问题

    来源: <http://bibipear.blog.sohu.com/143449988.html> 在我们的项目中,通常会用到showModalDialog 打开一个模态的子窗口,但是在 ...

  10. 【Android】Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT

    刚遇到了这个问题: Field requires API level 4 (current min is 1): android.os.Build.VERSION#SDK_INT 解决方法: 修改 A ...

随机推荐

  1. SQL SERVER 2014 双机热备操作流程-数据库双向同步 (第二篇:订阅)

    1.登录从服务器数据库,从数据库左侧菜单栏找到->复制->本地订阅->右击新建订阅->选择查找SQL Server 发布服务器,数据库服务器名称要是主服务器计算机名称,输入登录 ...

  2. eclipse console 控制台输出乱码解决办法

    一.console输出日志显示乱码 二.在类编辑处点击右键 Run As --> Run Configurations 三.在Common中设置字符集 gbk 四.restart 搜索 复制

  3. psq强制携带-h

    背景: pg更新后psql 指令必须携带 -h指令,导致很多直接使用"psql"的shell脚本无法连接. 方案: 1.挨个更新调用psql的地方: 显然太多了,改不过来. 2.新 ...

  4. 共享USB打印机设置方法

    打印机共享 一.准备 所有计算机在同一个网段. 所有计算机在同一个工作组,组名可以自定义,默认WORKGROUP. 使用超级管理员用户,目的是为了激活guest用户.验证之后可以不需要此前提. 二.主 ...

  5. jdk8 stream部分排序方法

    List<类> list; 代表某集合   //返回 对象集合以类属性一升序排序   list.stream().sorted(Comparator.comparing(类::属性一)); ...

  6. MySQL 某一列的值加入到另一列

    0.背景 文件url 文件名 /usr/local/img/goods/1/2021-12-22-e05bb433bc7a451ca5d7cc9d505d8ed8.jpg 酸枣糕.jpg /usr/l ...

  7. 车企-TSP系统通用架构设计

    最近一年用于参与到了新能源车企的管理系统的开发,并且主要从事架构设计与重难点功能开发的工作,因此有了一些小心得,特此记录(PS:整体和甲方在需求上扯皮,以及协调所有供应商这些项目管理上的事情比做开发耗 ...

  8. ElasticSearch的常用API

    ElasticSearch的常用API 1.在服务器上怎么查ES的信息 # 通过使用_cat可以查看支持的命令 ### curl localhost:9200/_cat eg: /_cat/alloc ...

  9. Activiti 7 启动流程实例

    首先,考虑下面这样一个流程图 主要的流程定义如下: <process id="demo" name="demo" isExecutable="t ...

  10. 8.XSS和CSRF漏洞

    XSS和CSRF漏洞 目录 XSS和CSRF漏洞 XSS漏洞介绍 XSS分类 利用XSS漏洞如何实行攻击 利用XSS盗取用户的Cookie 利用XSS实行钓鱼 利用XSS进行键盘监控 CSRF漏洞介绍 ...