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 相关文章推荐
自己动手制作jquery插件之自动添加删除行的实现
Oct 13 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
谷歌浏览器调试JavaScript小技巧
Dec 29 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
javascript记住用户名和登录密码(两种方式)
Aug 04 Javascript
详解javascript函数的参数
Nov 10 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
Jan 12 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
Sep 18 Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
Nov 06 Javascript
解决vue watch数据的方法被调用了两次的问题
Nov 07 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
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
JS中encodeURIComponent函数用php解码的代码
2012/03/01 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
PHP扩展Memcache分布式部署方案
2015/12/06 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
php中对象引用和复制实例分析
2019/08/14 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
range 标准化之获取
2011/08/28 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
JavaScript实现把数字转换成中文
2015/06/29 Javascript
javascript实现tab切换的两个实例
2015/11/05 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
JS实现css hover操作的方法示例
2017/04/07 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
举例详解Python中的split()函数的使用方法
2015/04/07 Python
Python设计模式之MVC模式简单示例
2018/01/10 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
pandas 层次化索引的实现方法
2019/07/06 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
金属材料工程个人求职的自我评价
2013/12/04 职场文书
数控专业个人求职信范文
2014/02/05 职场文书
小学毕业感言300字
2014/02/19 职场文书
小学生寒假家长评语
2014/04/16 职场文书
社区学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
总经理聘用协议书
2015/09/21 职场文书
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL