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中常用的55个经典技巧
Aug 12 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
Jul 03 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
jQuery中slideUp 和 slideDown 的点击事件
Feb 26 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
Mar 01 Javascript
js自定义select下拉框美化特效
May 12 Javascript
JavaScript仿微博输入框效果(案例分析)
Dec 06 Javascript
vue登录路由验证的实现
Dec 13 Javascript
layer 刷新某个页面的实现方法
Sep 05 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
Oct 17 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文件上传后端处理小技巧
2016/05/22 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
使用Apache的rewrite
2021/03/09 Servers
网页设计常用的一些技巧
2006/12/22 Javascript
JavaScript中this的使用详解
2013/11/08 Javascript
自己用jQuery写了一个图片的马赛克消失效果
2014/05/04 Javascript
javascript数组去重小结
2016/03/07 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
JS简单实现表格排序功能示例
2016/12/20 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Vue表单验证插件的制作过程
2017/04/01 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
深入学习JavaScript 高阶函数
2019/06/11 Javascript
带你使用webpack快速构建web项目的方法
2020/11/12 Javascript
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
你真的了解Python的random模块吗?
2017/12/12 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
python实现自动解数独小程序
2019/01/21 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
python使用隐式循环快速求和的实现示例
2020/09/11 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
怎么处理XML的中文问题
2015/03/26 面试题
介绍下Lucene建立索引的过程
2016/03/02 面试题
团组织关系介绍信
2014/01/12 职场文书
《蜗牛的奖杯》教后反思
2014/04/24 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
博士导师推荐信
2015/03/25 职场文书
入党积极分子群众意见
2015/06/01 职场文书
python调试工具Birdseye的使用教程
2021/05/25 Python
Apache Pulsar集群搭建部署详细过程
2022/02/12 Servers
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
Python爬虫 简单介绍一下Xpath及使用
2022/04/26 Python
Python中requests库的用法详解
2022/06/05 Python