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 相关文章推荐
用dtree实现树形菜单 dtree使用说明
Oct 17 Javascript
分享一则JavaScript滚动条插件源码
Mar 03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
JQuery+EasyUI轻松实现步骤条效果
Feb 22 Javascript
基于BootStrap的图片轮播效果展示实例代码
May 23 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
详解vue-router基本使用
Apr 18 Javascript
gulp解决跨域的配置文件问题
Jun 08 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
浅谈mint-ui 填坑之路
Nov 06 Javascript
JS跨域请求的问题解析
Dec 03 Javascript
VUE安装使用教程详解
Jun 03 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
ADODB的数据库封包程序库
2006/12/31 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
节点的插入之append()和appendTo()的用法介绍
2014/01/13 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
AngularJs导出数据到Excel的示例代码
2017/08/11 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
Python入门篇之条件、循环
2014/10/17 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
python交易记录整合交易类详解
2019/07/03 Python
python中的列表与元组的使用
2019/08/08 Python
python安装scipy的步骤解析
2019/09/28 Python
python scatter函数用法实例详解
2020/02/11 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
JDO的含义
2012/11/17 面试题
市场营销毕业生自荐信
2013/11/23 职场文书
机电职业生涯规划书范文
2014/03/08 职场文书
党员承诺书内容
2014/03/26 职场文书
圣诞晚会主持词
2015/07/01 职场文书
职工宿舍管理制度
2015/08/05 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
终止合同协议书范本
2016/03/22 职场文书
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
基于Python实现一个春节倒计时脚本
2022/01/22 Python