【Vue】针对路由跳转中编程式导航push和replace进行重写

Vue3路由实战:从基础配置到高级特性与性能优化 在现代前端开发中,单页面应用(SPA)通过客户端路由实现无刷新页面切换,这是构建流畅用户体验的核心技术。其原理是利用浏览器History API或Hash模式,将URL与组件视图动态绑定,实现应用状态的同步管理。这项技术的价值在于提升应用性能、保持页面状态,并为复杂的前端架构提供基础。它广泛应用于后台管理系统、内容平台和Web应用等场景。本文聚焦于Vue3生态下的官方路由库Vue Router,深入探讨其组合式API(Composition API)的使用范式,并详解如何通过路由懒加载和动态路由等高级特性进 阅读详情

【Vue】针对路由跳转中编程式导航push和replace进行重写



  在写Vue项目的时候,进行路由跳转,对于编程式导航会出现多次执行的时候抛出NavigationDuplication错误

解决的办法:

方法一(治标不治本):

/* 
	因为$router返回的是promise对象,该报错就是因为这个原因,promise需要接收成功和失败的回调所以我们在跳转的后面补两个参数
*/
this.$router.push({
  	name:'search',
  	params:{keyword:this.keyword},
  	query:{k:this.keyword.toUpperCase()}
},()=>{},()=>{})


方法二:重写
在配置路由组件的文件中进行重写

// 重写路由组件
// 用来保存原来的push和replace方法
let originPush = VueRouter.prototype.push
let originReplace = VueRouter.prototype.replace

// 重写push
// 在这里需要注意上下文的指向
/* 
    call和apply
    相同点:都可以调用函数一次,都可以篡改函数的上下文一次
    不同点:传递参数的时候,call是用逗号隔开,apply是传递数组
*/
VueRouter.prototype.push = function(argument,resolve=()=>{},reject=()=>{}){
    if(resolve && reject)
    {
        originPush.call(this,argument,resolve,reject)
    }
}

VueRouter.prototype.replace = function(argument,resolve=()=>{},reject=()=>{}){
    if(resolve && reject)
    {
        originReplace.call(this,argument,resolve,reject)
    }
}


总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

Vue 笔试题(六) 26. this.$ router.push()与this.$ routrt.replace()区别 this.$ router.push() 跳转到不同的url,但这个方法会向history栈添加一个记录,点击后退会返回到上一个页面。 this.$ router.replace()同样是跳转到指定的url,但是这个方法不会向history里面添加新的记录,点击返回,会跳转到上上一个页面。上一个记录是不存在的。 27.导航钩子 1)全局导航钩子 全局前置守卫 beforeEach(to,from,nex 阅读详情

相关推荐

Django RBAC权限系统实战:从模型设计到前后端全链路实现

权限管理是Web开发,尤其是后台管理系统的核心基础。RBAC(基于角色的访问控制)作为经典模型,通过将权限赋予角色、再将角色赋予用户,实现了权限分配的抽象与简化,有效解决了硬编码权限带来的维护难题。其技术价值在于提升了系统的安全性与可维护性,是构建中大型应用的基石。在Django框架中,虽然自带基础权限系统,但面对复杂的菜单、按钮及数据行级权限控制时,往往需要深度定制。本文以Django RBAC实战为核心,详细阐述了如何设计用户、角色、菜单一体化的核心模型,并实现包括JWT认证、动态菜单生成、接口鉴权与数

weixin_30565327的博客 342

重写VueRouter的push/replace方法

重写VueRouter的push/replace方法,遇到的问题及解决方案

superfeng88的博客 2966

Vue3+TypeScript+Element Plus+Vite构建企业级后台管理系统实战

在现代前端开发中,构建企业级后台管理系统需要兼顾开发效率、代码质量和团队协作。Vue 3作为主流框架,其组合式API和响应式系统为复杂应用提供了灵活的逻辑组织方式;TypeScript则为大型项目提供了类型安全保障,显著提升代码可维护性。结合Element Plus丰富的UI组件库和Vite极速的开发体验,这套技术栈形成了高效的前端工程化解决方案。本文聚焦于如何将这些技术整合为开箱即用的后台管理系统样板,涵盖路由权限集成、状态管理、请求封装等核心模块,并分享业务组件封装与构建部署的最佳实践,为开发者提供从零

weixin_29002595的博客 281

vue-router报NavigationDuped错误,以及重写$router.push与$router.replace方法

问题: 编程式路由跳转到当前路由(参数不变),多次执行会抛出NavigationDuped的警告错误 ===>>>路由跳转有两种形式:声明式导航、编程式导航 ===>>>声明式导航是没有这种问题的,因为vue-router底层已经处理好了 问题的产生原因 “vue-router”: “^3.5.3”:最新的vue-router引入了promise 解决方案 1、通过给push或者replace方法传递相应的成功、失败的回调函数,可以捕捉到当前错误,即可解决 this.$r

QZ9420的博客 986

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2216

步进电机梯形加减速算法的实现

步进电机梯形加减速算法的实现

m0_69251699的博客 1318

重写VueRouter的push|replace

重写VueRouter的push|replace 文章目录前言编写总结 前言 在进行编程式路由导航的时候,反复点击控制台就会提示报错,为了深入了解编程式路由跳转,以及 防止控制台的多次报错需要对VueRouter的原型上的push以及replace进行重新编写! 编写 找到router/index.js文件,也就是路由的入口文件 先将原型的push|replace保存一份: // 先把VueRouter原型对象的push,保存一份 let originPush = VueRouter.prototy.

The_more_more的博客 1万+

音视频入门:H264、H265概念总结

添加链接描述 什么是H.264与H.265 H.264与H.265都是视频压缩格式,由于视频本身的码流太大,所以需要经过压缩然后再通过网络进行传输。H.264是目前比较主流的压缩算法,像视频会议设备一般都采用这个编码格式。基础的H.264可以支持在1M带宽下传输720P30帧/秒的图像;H.264 HIGH PROFILE支持在512K带宽下传输720P30帧/秒的图像。 H.265是比较新的压缩算法,可以更一步提高压缩比,随着我们现在生活中出现的视频格式越来越大(比如现在基本都是1080P甚至4K的显示器

weixin_40673765的博客 8937

vue-router重写addRoutes,优雅的解决修改vue路由不更新的问题

最近在写项目,实现动态菜单及细粒化按钮权限功能,依托于vue-router动态路由的实现,可以实时从后端获取路由权限,并及时更新。 动态路由的实现可以看这篇完整文章:vue实现动态路由。 问题: 在使用addRoutes方法更新路由表的时候,发现从后端带来的权限信息并没有更新掉原有的路由信息。 思路: 查看vue-router文档,发现addRoutes已经不被推荐使用了,后来使用新的addRoute方法来逐个更新路由,发现并不能解决问题。api也没有提供remove路由的操作。 嗯~ 开始面向

hunt_er的博客 3888

新手3dslicer手动肝脏切割及体积测量(详细图文)

刚接手软件的时候,我一直想用自动分割工具,试验了Med sam,依赖安装不了;试验了英伟达的AI,NvidiaAIAssis,传服务器根本没反应,所有只有用了手动切割。不要求所有层面勾画,但是最好是典型层面都勾画一下,特别是有毗邻脏器密度相近的层面。点击3D后可能三维窗口未显示,可以调整一下窗口大小,有可能显示在我们看见的范围之外。早就准备更新这篇了,由于懒癌发作,一直早葛优躺,今天刚好有点时间,就简单写下来。

linjianping513的博客 5928

Windows应急响应实战:灰鸽子木马检测与清除全流程解析

远程控制木马(RAT)是一种基于客户端/服务器(C/S)架构的恶意软件,攻击者通过它能够远程操控受害主机,实现屏幕监控、文件窃取、键盘记录等操作,对个人隐私与企业数据安全构成严重威胁。其技术原理通常涉及进程注入、网络通信、持久化机制等核心环节,在应急响应中具有极高的分析价值。掌握此类木马的检测与清除方法,是Windows系统安全防护与事件处置的基本功。本文以经典的灰鸽子木马为例,结合进程分析、网络排查、注册表检查等实战技术,系统讲解从行为识别、痕迹取证到彻底清除的完整操作流程,并涵盖Rootkit对抗、无文

weixin_30521161的博客 415

vue重写push和replace方法

Vue解决编程式导航对此点击当前路由报错问题

qq_42582339的博客 950

【图论】系列(一)之图论的构成

图论是研究图的数学分支,本章介绍了图论的基本构成和概念

qq_30066733的博客 748

router编程式导航(push-replace)及同一事件触发多次路由跳转报错

1.路由跳转 2.push与replace的区别 3.路由传参(name-path) 4.多次路由跳转报错

m0_68320270的博客 950

springboot+vue项目基础开发(12)vue项目的搭建

在src目录下新建 api,utils,views文件夹。删除componets目录下自动生成的所有文件。在utils文件夹下创建request.js。启动项目,记得是要在管理员下启动。

m0_58498702的博客 153

Qwen2-VL出现RuntimeError: CUDA error: too many resources requested for launch CUDA kernel errors的解决方案

本文主要介绍了Qwen2-VL出现RuntimeError: CUDA error: too many resources requested for launch CUDA kernel errors的解决方案,希望能对使用Qwen2-VL的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 13万+

vue2(路由3)编程式导航重复跳转同一路由报错解决

vue2(路由3)编程式导航重复跳转同一路由报错解决

weixin_74285634的博客 2673

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

vue-router 跳转异常 Error: Navigation cancelled from “/“ to “/home“ with a new navigation.

2、vue-router@3.0版本及以上回调形式已经改成promise api的形式了,返回的是一个promise,如果路由地址跳转相同, 且没有捕获到错误,控制台始终会出现如图所示的警告 (注:3.0以下版本则不会出现以下警告!在main.js下注册一个全局函数即可 (注:此处理方案只针对于vue-router 3.0以上版本哈!注:官方vue-router@3.0及以上新版本路由默认回调返回的都是promise,原先就版本的路由回调将废弃!安装 npm install vue-router@2。

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 9万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【VUE学习笔记】vue-router编程式导航路由跳转到当前路由(参数不变), 多次执行会抛出 NavigationDuplicated 的警告错误?

注意:编程式导航(push|replace)才会有这种情况的异常,声明式导航是没有这种问题,因为声明式导航内部(vue-router)已经解决这种问题。 这种异常,对于程序运行是没有任何影响的。 但是看着非常烦 为什么会出现这种现象: 由于 vue-router 最新版本 3.5.2,引入了 promise,当传递参数多次且重复,会抛出异常,因此出现上面现象, function push(){ return new Promise((resolve,reject)=>{})} 第一种解决方案(仅解

DayHeart的博客 1087

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

1.12

尚

m0_63713211的博客 677

Vue Router重复点击报错解决方案与优化实践

在Vue.js单页应用开发中,路由管理是核心功能之一。Vue Router通过导航守卫机制实现路由跳转控制,其原理是拦截并处理所有导航请求。当检测到重复路由跳转时,从v3.2.0版本开始会抛出NavigationDuplicated错误,这对保证应用状态一致性有重要技术价值。这种机制常见于导航菜单、面包屑等用户交互场景。针对这一问题,开发者可以采用全局错误捕获、重写push方法等不同层级的解决方案,结合防抖处理和路由预加载等性能优化手段,既能消除控制台警告,又能提升用户体验。特别是在大型项目中,合理处理路由

weixin_30527423的博客 409

Vue-cli3的问题&解决

1、错误: 报错: Avoided redundant navigation to current location: "/home". 当使用js代码来控制路由跳转的时候,会出现问题;当多次点击首页按钮时,会报错,冗余导航 解决方法: 方法一: -在项目目录下运行 npm i vue-router@3.0 -S,将vue-router版本改为3.0即可 方法二: -解决vue-router在3.0版本以上重复点击报错的问题,重写以下两个方法 在index.js中 //push const origin

Pocketful的博客 325

Vue面试核心原理与工程实践:从响应式到路由的进阶指南

前端框架的响应式原理是理解数据驱动视图的基石。Vue通过依赖收集与派发更新,实现了状态变化到界面渲染的自动同步,而Vue3的Proxy进一步提升了拦截能力。生命周期管理则决定了组件从创建到销毁的合理时机,computed与watch在计算缓存和副作用处理上各有分工。组件通信方式的选择直接影响代码的可维护性,虚拟DOM与diff算法则是性能优化的关键。在实际工程中,路由配置、环境变量与调试工具也常是开发者的痛点。围绕这些高频面试点,深入剖析运行机制与工程取舍,帮助开发者真正掌握Vue的底层逻辑与实战技巧。

weixin_34280237的博客 495

VUE2常见面试题

本文摘要: Vue相关技术核心概念解析 MVVM与MVC架构区别 MVC单向数据流,视图与控制器耦合 MVVM双向绑定,数据自动同步,解耦视图与模型 Vue核心特性 生命周期钩子函数执行顺序(8个阶段) 数据双向绑定原理(Object.defineProperty+发布订阅) 组件通信机制(父子props/emit、跨级provide/inject等) 虚拟DOM与diff算法优化渲染 计算属性与侦听器区别(缓存机制) 状态管理 Vuex工作流程(state/mutations/actions/getter

2301_76805327的博客 467

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 402

2026前端面试题!(附答案及解析)(2026.9月最新版)

文章目录1.JSONP原理2. cookie、sessionStorage、localStorage的区别3.link和a标签区别4 vue中的跨域问题5 webpack面试题6 浏览器与服务器的交互原理7 什么是CSS盒模型 >>> -IE盒模型和W3C盒模型8 A解释一下闭包,B为什么要使用闭包?9 解释一下作用域链10 如何处理不让别人盗用你的图片,访问你的服务器资源?11 如何优化网站性能vue路由面试题1.对于MVVM的理解?2 Vue的生命周期1 什么是vue生命

weixin_43617604的博客 8万+
上一篇: 【Python】第十三部分 类的浅拷贝和深拷贝
下一篇: 【面试题】防抖和节流
Tree_wws
博客等级 码龄6年 1万+粉丝 185原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值