在编程式导航跳转时候,连续点击多次会报NavigationDuplicated错误

  this.$router.push({name: "search"});

出现这种错误原因是因为vue-router引入了promise,当我们使用this.$router.push时候需要多添加成功或失败的回调,否则就会报出以上的错误。

这时如果我们加入成功和失败的回调,就不会报错:

 this.$router.push({ name: "search" },//成功回调() => {},//失败回调() => {});

虽然解决了报错,但如果有多个路由跳转,这样每次都要在后面加两个回调函数,显得很繁琐,所以我们可以用另一个办法,一次性解决问题。

我们在引入vue-router所在文件下重写push和replace方法:

import VueRouter from 'vue-router';
//保存原型对象的Push
let originPush = VueRouter.prototype.push
let originReplace = VueRouter.prototype.replace
//重写push方法
VueRouter.prototype.push = function (location, res, rej) {if (res && rej) {originPush.call(this, location, res, rej)}else {originPush.call(this, location, () => { }, () => { })}}
//重写replace方法
VueRouter.prototype.replace = function (location, res, rej) {if (res && rej) {originReplace.call(this, location, res, rej)}else {originReplace.call(this, location, () => { }, () => { })}}

至此我们成功解决问题,

vue router连续点击多次路由报错相关推荐

  1. vue router连续点击多次路由报错根本原因和解决方法

    原因: vue-router 升级到 3.1.x 后,重复点击导航时,控制台出现报错 ,vue router ≥ v3.1 后 ,回调形式改成 promise api 了,返回的是 promise,如 ...

  2. 解决vue项目重复点击跳转路由报错以及路由重定向的问题

    // 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题 const originalPush = VueRouter.prototype.push VueRout ...

  3. 解决vue项目中重复点击导航路由报错

    vue版本 "vue": "^2.6.11", 主要代码 //重复点击导航路由报错 const originalPush = VueRouter.prototy ...

  4. vue 解决重复点击导航路由报错 问题

    // 解决重复点击导航路由报错 const originalPush = VueRouter.prototype.push VueRouter.prototype.push = function pu ...

  5. vue重复路由报错解决

    vue重复路由报错解决 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation- 分为三种解决方式 1.捕获异 ...

  6. vue重复访问同一路由报错

    vue重复访问同一路由报错 import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) // 重写router的push ...

  7. vue router返回到指定的路由

    vue router返回到指定的路由 一.项目场景 二.问题描述 三.原因分析 四.解决方案 一.项目场景 项目场景:示例:A(商品详情)--B(商品购买页面)-C(支付成功页面)--D(订单页面) ...

  8. vue项目在vscode中编译eslint报错没显示红色波浪线提示

    vue项目在vscode中编译eslint报错没显示红色波浪线提示. 如下图所示: 下图是预期效果: 不符合Eslint校验规则的代码位置都能展示出来,这样一目了然.能帮助我们迅速找到报错的位置. 然 ...

  9. .vue文件在webstorm中es6语法报错解决方法

    .vue文件在webstorm中es6语法报错解决方法 参考文章: (1).vue文件在webstorm中es6语法报错解决方法 (2)https://www.cnblogs.com/yuqing6/ ...

最新文章

  1. shell test命令
  2. Chapter 11 替代变量
  3. 2010年度报告:是谁在编写Linux内核?
  4. 光流 | 基于对偶方法的变分光流改进算法
  5. javascript 本地对象和内置对象_JavaScript 的面向对象
  6. python基础之os.system函数执行命令行语句
  7. Broadcom获得65亿美元过度贷款以收购Brocade
  8. mac环境下配置gradle\maven
  9. ubuntu 将某个目录下的文件复制到_Ubuntu系统简单美化
  10. Google C++测试框架系列高级篇:第一章 更多关于断言的知识
  11. cad2012打开后闪退_win10系统安装cad2012一直闪退的解决方法
  12. Apm飞控学习笔记-AC_PosControl位置控制-Cxm
  13. 计算机常识 和 应用技巧
  14. 送给计算机老师的话,送给老师的话经典语录
  15. 达梦sql优化实践5
  16. 正则表达式(菜鸟教程)
  17. SAP中汇率固定配置和应用分析测试
  18. ModelWhale 云端运行 WRF 中尺度数值气象模式,随时随地即开即用的一体化工作流
  19. java初步语法(一)数据类型
  20. java 字符 加密_Java 字符串的加密与解密

热门文章

  1. 老男孩-筷子兄弟(歌词)
  2. [乐评]写一点关于我心中的小女人
  3. Hbaseshell scan多种过滤操作
  4. 联合国粮农组织推荐的人类五大健康食品
  5. 人生感悟人生是一场修行
  6. 拦截手机app发起的请求,获取请求信息!调试必备!!!
  7. kafka实践(十七): Logi-KafkaManager研究
  8. 使用restTemplate上传图片
  9. vc驿站视频教程笔记4 Cstring 讲解
  10. Magicka 局域网 联机