vue-router重定向不刷新问题的解决


Posted in Javascript onJune 25, 2018

前阵子太忙了,自己一个人一边开发着新项目,一边维护着旧项目,没时间写博客,终于让我腾出时间了。废话少说,开始正文。

问题描述:

之前项目是angular开发的,后来用vue重构后。项目路径和vue路径不一致,但是app端分享出的链接,依旧是旧项目链接

解决方法:

通过阅读vue-router的官方文档,发现重定向可以解决这个问题。

如之前文件路径是'/live/detail/id=7234','/skill/microList/',新项目路径是 '/s/live/detail?id=7234','/s/live/list'

{path: '/live/list(/)?:foo', redirect: '/s/live/list'},
{path: '/s/live/list', meta: {keepAlive:true,title: '课程'}, component: resolve => require(['../pages/s/live/list/Index.vue'], resolve)},
{path: '/live/detail(/)?:id', redirect: '/s/live/detail?:id'},
{path: '/s/live/detail', meta: {title: '课程详情'}, component: resolve => require(['../pages/s/live/detail/Index.vue'], resolve)},

新的问题:  

本来以为重定向就万事大吉了,结果发版后,有用户反馈是空白页面。我仔细看了路径没问题啊,顺直一点点排查,发现重定向成功了,但是页面没刷新

解决方法:

通过仔细观察,重定向的过程,发现会先执行旧路由,再进行重定向,那么可以统一配置旧路径,让其刷新。router中

{path: '*',meta:{title: '学部'}, component: resolve => require(['../pages/NotFound/Index.vue'], resolve)},

使用通配符,让之前没有写路径规则的页面,统一跳转到一个新的页面,让再新页面判断是否是重定向过来的。NotFound页面的代码

beforeRouteEnter(to,from,next){
 next(vm => {
  console.warn(to.redirectedFrom)
  if(to.redirectedFrom){//vue-router redirect不会刷新页面,需要判断并刷新
   // vm.$router.go(0)//safari浏览器go(0)无效
   window.location.reload()
  }
 })
},

重定向的页面会有redirectedFrom这个属性,然后让其刷新即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Tab页界面,用jQuery及Ajax技术实现
Sep 21 Javascript
jQuery学习笔记之jQuery.fn.init()的参数分析
Jun 09 Javascript
js实现局部页面打印预览原理及示例代码
Jul 03 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
Vue-resource实现ajax请求和跨域请求示例
Feb 23 Javascript
jquery点赞功能实现代码 点个赞吧!
May 29 jQuery
js实现动态增加文件域表单功能
Oct 22 Javascript
用node.js写一个jenkins发版脚本
May 21 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
May 19 jQuery
vue 防止页面加载时看到花括号的解决操作
Nov 09 Javascript
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
JavaScript实现封闭区域布尔运算的示例代码
Jun 25 #Javascript
详解React之父子组件传递和其它一些要点
Jun 25 #Javascript
Vue EventBus自定义组件事件传递
Jun 25 #Javascript
一个Vue页面的内存泄露分析详解
Jun 25 #Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 #Javascript
angularjs结合html5实现拖拽功能
Jun 25 #Javascript
vue中vee validate表单校验的几种基本使用
Jun 25 #Javascript
You might like
ThinkPHP中处理表单中的注意事项
2014/11/22 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
JavaScript效率调优经验
2009/06/04 Javascript
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
原生JS实现响应式瀑布流布局
2015/04/02 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
Python 数据结构之堆栈实例代码
2017/01/22 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python中的枚举类型示例介绍
2019/01/09 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
Python如何通过百度翻译API实现翻译功能
2020/04/02 Python
Python实现小黑屋游戏的完整实例
2021/01/06 Python
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
linux面试题参考答案(4)
2013/01/28 面试题
《云雀的心愿》教学反思
2014/02/25 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
自我工作评价范文
2015/03/06 职场文书
户外亲子活动总结
2015/05/08 职场文书
民政局未婚证明
2015/06/15 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
MYSQL主从数据库同步备份配置的方法
2021/05/26 MySQL
关于PostgreSQL JSONB的匹配和交集问题
2021/09/14 PostgreSQL
Go语言安装并操作redis的go-redis库
2022/04/14 Golang
Java中的Kotlin 内部类原理
2022/06/16 Java/Android
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL