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打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
jQuery Div中加载其他页面的实现代码
Feb 27 Javascript
当jQuery遭遇CoffeeScript的时候 使用分享
Sep 17 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 Javascript
jsp+javascript打造级连菜单的实例代码
Jun 14 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
JS实现霓虹灯文字效果的方法
Aug 06 Javascript
javascript使用 concat 方法对数组进行合并的方法
Sep 08 Javascript
vue中如何实现变量和字符串拼接
Jun 19 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
Vue+element-ui 实现表格的分页功能示例
Aug 18 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
Protoss热键控制
2020/03/14 星际争霸
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
php去除html标记的原生函数详解
2015/01/27 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
JQuery里选择超链接的实现代码
2011/05/22 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
Backbone.js框架中简单的View视图编写学习笔记
2016/02/14 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
AngularJS 实现弹性盒子布局的方法
2016/08/30 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
jQuery Form插件使用详解_动力节点Java学院整理
2017/07/17 jQuery
基于AngularJS实现表单验证功能
2017/07/28 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
layuiAdmin循环遍历展示商品图片列表的方法
2019/09/16 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
Python中使用中文的方法
2011/02/19 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python中字符串的操作方法大全
2018/06/03 Python
python http基本验证方法
2018/12/26 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
Python线程条件变量Condition原理解析
2020/01/20 Python
python对文件的操作方法汇总
2020/02/28 Python
在Django中预防CSRF攻击的操作
2020/03/13 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
美国NBA官方商店:NBA Store
2019/04/12 全球购物
Java如何读取CLOB字段
2013/10/10 面试题
汽车检测与维修个人求职信
2013/09/24 职场文书
长城导游词
2015/01/30 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python