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

原因

触发这种情况是因为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. 网站下/.git/index查看

    遇见有些网站目录中存在 http://target.com/.git/index 由于index是二进制文件 下载回来本地查看 初始化 下载到.git目录 git checkout-index -a

  2. vs2019远程调试win7系统的程序

    vs2019远程调试   一.安装vs2019远程调试工具 首先让调试的电脑(也就是不安装vs2019的电脑),安装vs2019远程调试工具:VS_RemoteTools.exe. 网址:进行下载.h ...

  3. 不使用setTimeout的延迟执行

    function sleep(ms){ var time = new Date(); time.setTime(time.getTime() + ms); while(new Date().getTi ...

  4. linux 打包各种后缀的命令

    01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...

  5. C++编码注意事项

    1. vector,string不能按位赋值(vector用push_back, string用重载"+"号)

  6. 数据库中1NF,2NF,3NF的判别

    参照:https://blog.csdn.net/qq_28888837/article/details/98733448 1NF:每一个都是最原子化.  2NF:找到主键后,每一个非主键对主键都是完 ...

  7. 2021年9月学科能力综合测试(TACA)试题解答 Mathemaitca练习

    各个都是人形计算器???? 目录 试题地址 1 签到 2 3 签到 4 5 6 7 8 9 10 11 你让我猜我肯定这么猜 12 13 试题地址 http://www.mxqe.com/gzsnj/ ...

  8. WordPress回复/评论本文可见

    给WordPress添加一个实用的小功能,那就是回复可见,评论文章才能见到隐藏内容. 在主题目录下找到functions.php文件,在合适位置添加下方的代码: // 回复可见 function re ...

  9. wx相关

    1.vue图片预览放大 https://www.jianshu.com/p/e3350aa1b0d0 2.js图片文件格式的转换 https://www.jianshu.com/p/ea757f90b ...

  10. Serial port

    前言 ​ 使用qt开发一款简易串口助手. ​ 目标: 1. 实现正常串口通信. 2. 能够传输AT指令.(需要注意回车符) github仓库地址:shadow-wd/Serial-port-assis ...