Vue路由重复点击报错问题及解决

 更新时间:2023年04月04日 17:05:50   作者:IT__learning  
这篇文章主要介绍了Vue路由重复点击报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

vue路由重复点击时会出现报错

Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location:XXX

虽然不影响运行结果,但最好还是处理一下。

在这里插入图片描述

局部处理

局部处理是指对单个路由进行处理,其他的路由依旧报错。

在路由跳转的push语句中添加catch捕捉错误

所以原来的路由跳转改为以下代码:

		toecharts(){
            this.$router.push({
                    path:'/echarts'
                }
            ).catch(err => {})		//添加catch捕捉错误
        }

全局处理

全局处理是指对所有路由进行处理。

在main.js文件添加以下代码(代码直接复制就好,无需改动)

import Router from 'vue-router'

const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
	return originalPush.call(this, location).catch(err => err)
}

vue 重复点击菜单,路由重复报错解决

报错信息

vue-router在3.0版本以上时,重复点菜单,控制台会报错,虽然不影响使用,但是最好处理下这个问题,不然也可能会影响调试其他问题。

image.png

报错原因

vue-router在3.0版本以上时 ,回调形式改成了promise api,返回的是promise,如果没有捕获到错误,控制台始终会出现如上图的报错

node_module/vue-router/dist/vue-router.js 搜VueRouter.prototype.push

解决方法

1.降低vue-router的版本

npm i vue-router@3.0 -S

2.在vue.use(Router)使用路由插件之前插入如下代码

//获取原型对象上的push函数
const originalPush = Router.prototype.push
//修改原型对象中的push方法
Router.prototype.push = function push (location) {
  return originalPush.call(this, location).catch(err => err)
}

3.捕获异常

// 捕获router.push异常
this.$router.push(route).catch(err => {
    console.log('输出报错',err)

4.补齐router第三个参数

// 补齐router.push()的第三个参数
this.$router.push(route, () => {}, (e) => {
    console.log('输出报错',e) 
})

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue实现将一个数组内的相同数据进行合并

    vue实现将一个数组内的相同数据进行合并

    今天小编就为大家分享一篇vue实现将一个数组内的相同数据进行合并,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 在vue中使用iframe解决视频资源的防盗链

    在vue中使用iframe解决视频资源的防盗链

    我们的vue2.0项目当中,存储了许多图片和视频资源,所以我们需要增加防盗链设置,但是这样一来,当我们将其他网站上的视频资源,想入到我们的环境当中的时候,会报错,所以本文给大家介绍了在vue中使用iframe解决视频资源的防盗链,需要的朋友可以参考下
    2023-12-12
  • vue中pc移动滚动穿透问题及解决

    vue中pc移动滚动穿透问题及解决

    这篇文章主要介绍了vue中pc移动滚动穿透问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue.js使用v-if实现显示与隐藏功能示例

    vue.js使用v-if实现显示与隐藏功能示例

    这篇文章主要介绍了vue.js使用v-if实现显示与隐藏功能,结合简单实例形式分析了使用v-if进行判断实现元素的显示与隐藏功能,需要的朋友可以参考下
    2018-07-07
  • Vue3监听reactive对象中属性变化的方法

    Vue3监听reactive对象中属性变化的方法

    在 Vue 3 中,如果你想监听 reactive 对象中的某个属性发生的变化,你可以使用 watch 函数进行监听,watch 函数允许你观察 reactive 对象的某个属性或者整个对象,所以本文给大家介绍了Vue3监听reactive对象中属性变化的方法,需要的朋友可以参考下
    2024-08-08
  • vue中this.$http.post()跨域和请求参数丢失的解决

    vue中this.$http.post()跨域和请求参数丢失的解决

    这篇文章主要介绍了vue中this.$http.post()跨域和请求参数丢失的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 在vue中封装的弹窗组件使用队列模式实现方法

    在vue中封装的弹窗组件使用队列模式实现方法

    这篇文章主要介绍了在vue中封装的弹窗组件使用队列模式实现方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • vue element ui表格相同数据合并单元格效果实例

    vue element ui表格相同数据合并单元格效果实例

    工作中遇到需要根据单元格某个属性合并,特此记录下,下面这篇文章主要给大家介绍了关于vue element ui表格相同数据合并单元格效果的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Element中table组件(el-table)右侧滚动条空白占位处理

    Element中table组件(el-table)右侧滚动条空白占位处理

    当我设置了max-height,就会在表格右侧出现一列空白的占位,本文主要介绍了Element中table组件(el-table)右侧滚动条空白占位处理,感兴趣的可以了解一下
    2023-09-09
  • vue3+ts如何通过lodash实现防抖节流详解

    vue3+ts如何通过lodash实现防抖节流详解

    loadsh是一个工具库,我们通常使用loadsh的debounce函数处理防抖,下面这篇文章主要给大家介绍了关于vue3+ts如何通过lodash实现防抖节流的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论