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 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
文本框根据输入内容自适应高度的代码
Oct 24 Javascript
JQuery UI的拖拽功能实现方法小结
Mar 14 Javascript
使表格的标题列可左右拉伸jquery插件封装
Nov 24 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
Aug 31 Javascript
AngularJS初始化静态模板详解
Jan 14 Javascript
javascript中数组和字符串的方法对比
Jul 20 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
jquery一键控制checkbox全选、反选或全不选
Oct 16 jQuery
微信小程序scroll-view实现字幕滚动
Jul 14 Javascript
Vue.js计算机属性computed和methods方法详解
Oct 12 Javascript
JavaScript实现一键复制内容剪贴板
Jul 23 Javascript
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/06/26 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
jQuery之Deferred对象详解
2014/09/04 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
JavaScript去除数组里重复值的方法
2015/07/13 Javascript
jquery实现美观的导航菜单鼠标提示特效代码
2015/09/06 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
详解vue中computed 和 watch的异同
2017/06/30 Javascript
VUE长按事件需求详解
2017/10/18 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
2019/11/13 Javascript
创建nuxt.js项目流程图解
2020/03/13 Javascript
Layer UI表格列日期格式化及取消自动填充日期的实现方法
2020/05/10 Javascript
vue el-upload上传文件的示例代码
2020/12/21 Vue.js
微信小程序视频弹幕发送功能的实现
2020/12/28 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
简单了解Python3里的一些新特性
2019/07/13 Python
如何解决python多种版本冲突问题
2020/10/13 Python
Django集成MongoDB实现过程解析
2020/12/01 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
小班下学期评语
2014/05/04 职场文书
人大代表选举标语
2014/10/07 职场文书
企业宣传语大全
2015/07/13 职场文书
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript