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 相关文章推荐
JavaScript XML实现两级级联下拉列表
Nov 10 Javascript
查找iframe里元素的方法可传参
Sep 11 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
May 15 Javascript
BootStrap中的table实现数据填充与分页应用小结
May 26 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
js实现select选择框效果及美化
Aug 19 Javascript
使用 Vue.js 仿百度搜索框的实例代码
May 09 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
js实现微信聊天效果
Aug 09 Javascript
JavaScript控制台的更多功能
Apr 28 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
phpmyadmin的#1251问题
2006/11/25 PHP
php中$this-&amp;gt;含义分析
2009/11/29 PHP
PHP函数http_build_query使用详解
2014/08/20 PHP
JS操作XML中DTD介绍及使用方法分析
2019/07/04 PHP
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
JavaScript中的this机制
2016/01/30 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
jQuery+SpringMVC中的复选框选择与传值实例
2018/01/08 jQuery
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
vue 实现根据data中的属性值来设置不同的样式
2020/08/04 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
[01:08:44]NB vs VP 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python打印“菱形”星号代码方法
2018/02/05 Python
在cmd中运行.py文件: python的操作步骤
2018/05/12 Python
Python netmiko模块的使用
2020/02/14 Python
属性与 @property 方法让你的python更高效
2020/09/21 Python
django使用多个数据库的方法实例
2021/03/04 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
校园门卫岗位职责
2013/12/09 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
十岁生日同学答谢词
2014/01/19 职场文书
综合实践活动方案
2014/02/14 职场文书
给市场的环保建议书
2014/05/14 职场文书
节能减耗标语
2014/06/21 职场文书
普通党员整改措施
2014/10/24 职场文书
2015年上半年信访工作总结
2015/03/30 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
检讨书怎么写?
2019/06/21 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS