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 相关文章推荐
js随机颜色代码的多种实现方式
Apr 23 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
js实现简洁的滑动门菜单(选项卡)效果代码
Sep 04 Javascript
javascript数据结构之二叉搜索树实现方法
Nov 25 Javascript
在Node.js中使用Javascript Generators详解
May 05 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
通过npm引用的vue组件使用详解
Mar 02 Javascript
深入掌握 react的 setState的工作机制
Sep 27 Javascript
微信小程序使用request网络请求操作实例
Dec 15 Javascript
JavaScript设计模式之职责链模式应用示例
Aug 07 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
CI框架安全类Security.php源码分析
2014/11/04 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
JavaScript网页制作特殊效果用随机数
2007/05/22 Javascript
一个加载js文件的小脚本
2007/06/28 Javascript
禁止IE用右键的JS代码
2013/12/30 Javascript
javascript页面渲染速度测试脚本分享
2014/04/15 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
js中this的用法实例分析
2015/01/10 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
基于JavaScript实现div层跟随滚动条滑动
2016/01/12 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
JS获取一个表单字段中多条数据并转化为json格式
2017/10/17 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
JavaScript选择排序算法原理与实现方法示例
2018/08/06 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
Vue为什么要谨慎使用$attrs与$listeners
2020/08/27 Javascript
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
2019/12/12 Python
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
商学院大学生求职的自我评价
2014/03/12 职场文书
房产继承公证书
2014/04/09 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
员工年终考核评语
2014/12/31 职场文书
本溪关门山导游词
2015/02/09 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python