错误 “Avoided redundant navigation to current location...” 的解决方案

这篇具有很好参考价值的文章主要介绍了错误 “Avoided redundant navigation to current location...” 的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当 vue 项目中使用 vue-router 的 编程式导航 写法进行路由切换时:

// Search/index.vue
<button @click="goSearch" v-model="keyword">搜索</button>  //按钮绑定事件,切换路由

methods: {
    goSearch() {
      this.$router.push({     //编程式导航
        name: 'search',
        params: {
          keyword: this.keyword,
        },
        query: {
          k: this.keyword.toUpperCase()
        }
      })
    }
  }

如果用户在页面 多次点击按钮 时,浏览器的控制台报如下错误:

avoided redundant navigation to current location,Error Logs,Front-end Blogs,vue.js,前端,javascript文章来源地址https://www.toymoban.com/news/detail-572924.html

错误原因: vue-router 实例上的 push 方法返回的是 promise 对象,所以传入的参数期望有一个成功和失败的回调,如果省略不写则会报错。

解决方案一:每次使用 push 方法时带上两个回调函数:

this.$router.push(`/search/${this.keyword}}`, ()=>{}, ()=>{})  
//第二、第三个参数分别为成功和失败的回调函数
      

解决方案二:重写 Vue-router 原型对象上的 push 函数:

let originPush =  VueRouter.prototype.push;  //备份原push方法

VueRouter.prototype.push = function (location, resolve, reject){
    if (resolve && reject) {    //如果传了回调函数,直接使用
        originPush.call(this, location, resolve, reject);
    }else {                     //如果没有传回调函数,手动添加
        originPush.call(this, location, ()=>{}, ()=>{}); 
    }
}

到了这里,关于错误 “Avoided redundant navigation to current location...” 的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法

    点击vue路由跳转,控制台报错:Avoided redundant navigation to current location: “/xxxxxx“解决方法 在使用 this.$router.push 跳转页面时候,重复点击菜单引起路由重复报错 比如当前页面显示区是路由组件‘/cats’,重复点击按钮进行this.$router.push跳转,要跳转的组件仍然是‘/cats’,那么

    2024年02月02日
    浏览(35)
  • 解决Vue报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location...

    解决方案: 方案一:只需在 router 文件夹下,添加如下代码: 方案二、使用 catch 方法捕获 router.push 异常。 方案三、在跳转时,判断是否跳转路由和当前路由是否一致,避免重复跳转产生问题。 index路由文件 菜单组件 修改后的截图

    2024年02月17日
    浏览(55)
  • vue-router.esm.js?a12b:2046 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation

    vue-router.esm.js?a12b:2046 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: \\\"/home\\\".   报错原因:重复点击路由导致,因为vue-router引入了promise,当我们使用this.$router.push时候需要多添加成功或失败的回调,否则就会报出以上的错误。 原代码 第一种         在进

    2023年04月08日
    浏览(128)
  • Ubuntu遇到错误: E: Unable to locate package

    对于 Ubuntu 操作系统和 apt-get 包管理器,以下是一些常见的解决方法:行 sudo apt clean 命令可能有助于解决问题。感谢您的指正。 sudo apt clean 命令用于清理本地软件包缓存。当软件包列表或索引出现问题时,清理缓存可以帮助确保您从软件源获取最新的正确数据。 执行以下步

    2024年02月05日
    浏览(42)
  • AndroidStudio中虚拟机(AVD)无法启动,出现unable to locate adb错误

    1.检查Android SDK Platform-Tools是否安装(个人是通过这个方法解决的) 首先通过File-Project Structure-Project SDK检查SDK有没有被选中 步骤:打开file - settings ,搜索SDK 之后点击\\\"-\\\",在点击Apply进行安装 2.可能是驱动的问题 电脑未安装指定手机的android ADB interface驱动(比如),这个可能性最大

    2024年04月28日
    浏览(34)
  • Ubuntu20.04、22.04 报错 E: Unable to locate package yum 终极解决方案

    最近装了ubuntu子系统试了好多方法、更换了好多镜像源,但还是无法解决报错 E: Unable to locate package yum   最终通过添加源deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse 成功解决,具体方法如下: 1.备份source.list文件,防止弄坏下载源 2.更换国内源 vim使用说明:

    2023年04月17日
    浏览(55)
  • 安装git-lfs时出现Unable to locate package git-lfs的解决方案

      大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作

    2024年02月05日
    浏览(53)
  • Python Selenium 元素定位错误Message: no such element: Unable to locate element: {“method“:xxx}

    报错信息 第一种情况就是你的元素定位表达式错误,根本就没有你表达式定位的这个元素,这时候就需要检查一下自己的表达式有没有写错了。当然这种情况出现的可能性不大,所以最有可能的原因还是以下几种 在打开多个窗口的情况下一定要注意selenim到底处于那个窗口上

    2024年02月16日
    浏览(43)
  • 几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK

    几个Flutter常见诊断错误与解决 jcLee95:https://blog.csdn.net/qq_28550263 https://blog.csdn.net/qq_28550263/article/details/132869987 问题描述 原因分析 这个错误表示找不到Android SDK。可能的原因是Android Studio没有安装或者安装路径没有正确配置。 解决办法 问题描述 原因与解决 这个错误信息表明

    2024年02月04日
    浏览(53)
  • 【错误记录】Android Studio 编译报错 ( Android Gradle plugin requires Java 11 to run. You are currently using )

    使用 最新版本的 Android Studio 创建应用 , 并执行 , 报如下错误 : 当前使用的 JDK 版本是 1.8 , 将 JDK 升级为 11 版本 ; 先在指定目录 , 安装 JDK 工具 ; 选择 \\\" 菜单栏 | File | Settings \\\" 选项 , 在 \\\" Build, Execution , Deployment | Build Tools | Gradle \\\" 选项中 , 设置 刚才 安装的 JDK 即可 ; 编译通过

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包