vue-router重写push方法,解决相同路径跳转报错问题


Posted in Javascript onAugust 07, 2020

修改vue-router的配置文件,默认位置router/index.js

import Vue from 'vue'
import Router from 'vue-router'
 
/**
 * 重写路由的push方法
 * 解决,相同路由跳转时,报错
 * 添加,相同路由跳转时,触发watch (针对el-menu,仅限string方式传参,形如"view?id=5")
 */
 
// 保存原来的push函数
const routerPush = Router.prototype.push 
// 重写push函数
Router.prototype.push = function push(location) {
 
 // 这个if语句在跳转相同路径的时候,在路径末尾添加新参数(一些随机数字)
 // 用来触发watch
 if(typeof(location)=="string"){
 var Separator = "&";
 if(location.indexOf('?')==-1) { Separator='?'; }
 location = location + Separator + "random=" + Math.random();
 }
 
 // 这个语句用来解决报错
 // 调用原来的push函数,并捕获异常
 return routerPush.call(this, location).catch(error => error)
}
 
Vue.use(Router)
export default new Router({
 routes: [
 {
  path: '/',
 
 }
 ]
})

补充知识:vue router-link 路径变化 页面内容不变

在VUE项目中有碰到过,vue 同一 路由页面 用router-link 或者 router.push() 访问同一路由页面,出现url地址有变化,但是页面内容没有变化,没有重新加载信息

解决方案如下

<router-link to="/home" @click.native="flushCom">首页</router-link>
<script>  
export default {
...
...
methods:{
 flushCom:function(){
 //router是路由实例,例如:var router = new Router({})
  //router.go(n)是路由的一个方法,意思是在history记录中前进或者后退多少步,0就表示还是当前,类似window.history.go(n)
 this.$router.go(0); 
 }
}
}
<script>

等于在router 链接 触发后 再通过click 时间 刷新本页面

以上这篇vue-router重写push方法,解决相同路径跳转报错问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
nicejforms——美化表单不用愁
Feb 20 Javascript
JavaScript的单例模式 (singleton in Javascript)
Jun 11 Javascript
基于jQuery的获取标签名的代码
Jul 16 Javascript
15个jquery常用方法、小技巧分享
Jan 13 Javascript
JavaScript学习笔记之JS对象
Jan 22 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
基于Javascript实现倒计时功能
Feb 22 Javascript
canvas红包照片实例分享
Feb 28 Javascript
vue 父组件调用子组件方法及事件
Mar 29 Javascript
基于vue的验证码组件的示例代码
Jan 22 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
手把手带你搭建一个node cli的方法示例
Aug 07 #Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 #Javascript
vue数据更新UI不刷新显示的解决办法
Aug 06 #Javascript
基于vue 动态菜单 刷新空白问题的解决
Aug 06 #Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 #Javascript
解决vue动态下拉菜单 有数据未反应的问题
Aug 06 #Javascript
JavaScript中ES6规范中let和const的用法和区别
Aug 06 #Javascript
You might like
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
PHP脚本数据库功能详解(下)
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
PHP实现全角字符转为半角方法汇总
2015/07/09 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
php 基础函数
2017/02/10 PHP
JS正则中的RegExp对象对象
2012/11/07 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jquery分析文本里url或邮件地址为真实链接的方法
2015/06/20 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
angular2中使用第三方js库的实例
2018/02/26 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
python中异常报错处理方法汇总
2016/11/20 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
英国领先的维生素和营养补充剂直接供应商:Healthspan
2019/04/22 全球购物
英国露营设备和户外服装购物网站:Simply Hike
2019/05/05 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
安全生产管理合理化建议书
2014/03/12 职场文书
预备党员转正考核材料
2014/06/03 职场文书
集中采购方案
2014/06/10 职场文书
项目合作意向书模板
2014/07/29 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
大学生入党积极分子自我评价
2014/09/20 职场文书
写给老师的保证书
2015/05/09 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
详解Redis基本命令与使用场景
2021/06/01 Redis
Python装饰器详细介绍
2022/03/25 Python