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 判断脚本加载完毕的代码
Jul 13 Javascript
jQuery JSON实现无刷新三级联动实例探讨
May 28 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
Javascript基础教程之数据类型 (数值 Number)
Jan 18 Javascript
javascript中键盘事件用法实例分析
Jan 30 Javascript
javascript数组排序汇总
Jul 07 Javascript
通过点击jqgrid表格弹出需要的表格数据
Dec 02 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
Jan 23 Javascript
vue配置请求本地json数据的方法
Apr 11 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
layui动态渲染生成select的option值方法
Sep 23 Javascript
layui实现多图片上传并限制上传的图片数量
Sep 26 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水印技术
2007/02/14 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP基于CURL进行POST数据上传实例
2014/11/10 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
使javascript也能包含文件
2006/10/26 Javascript
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
基于vue2实现上拉加载功能
2017/11/28 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
关于layui 实现点击按钮添加一行(方法渲染创建的table)
2019/09/29 Javascript
js实现点击生成随机div
2020/01/16 Javascript
JavaScript进阶(一)变量声明提升实例分析
2020/05/09 Javascript
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python实现屏保计时器的示例代码
2018/08/08 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python ORM框架Peewee用法详解
2020/04/29 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
献爱心大型公益活动策划方案
2014/09/15 职场文书
人事行政主管岗位职责
2015/04/09 职场文书
2016猴年春节问候语
2015/11/11 职场文书
2016年中学植树节活动总结
2016/03/16 职场文书
2016个人廉洁自律承诺书
2016/03/25 职场文书
2019银行竞聘书
2019/06/21 职场文书
nginx作grpc的反向代理踩坑总结
2021/07/07 Servers
以MySQL5.7为例了解一下执行计划
2022/04/13 MySQL
python如何利用cv2.rectangle()绘制矩形框
2022/12/24 Python