解决vue-router的beforeRouteUpdate不能触发


Posted in Vue.js onApril 14, 2022

vue-router beforeRouteUpdate不触发

官方对于beforeRouteUpdate的解释如下:

beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },

不能触发的原因可以看注释的第二、三行,只有动态参数的路径(/foo/1 和 /foo/2这样),才会调用。

我尝试对router动态处理

vue.$router.push({ path: path , query: { t: (new Date()) }});

这个场景下,beforeRouteUpdate成功触发。

可以考虑修改你的router-link写法,加个参数,代码示例如下:

<router-link :to="{path:'/home',query: {t: new Date()}}">首页</router-link>

当然,最主要的是,这个方法是组件内的导航守卫,切换路由组件,按你目前的代码功能来看,如果想触发,

除了router-link要带参数,还需要修改router-view

<keep-alive>
  <router-view></router-view>
</keep-alive>

另外可以采用如下解决办法:

 watch: {
    $route(to, from) {
        console.log(to);
        console.log(from);
    }
  }

同样试用 vue-router路由跳转created不执行,页面不刷新的解决办法 

beforeRouteEnter和beforeRouteUpdate的坑

beforeRouteEnter是新进入的一个路由,比如进入/login登录界面,会触发beforeRouteEnter这个钩子;

而beforeRouteUpdate是路由更新时触发,从主页进入登录界面不会触发这个钩子函数,一个父路由下的子路由跳转会触发这个钩子函数。

Vue.js 相关文章推荐
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 Vue.js
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
vue单元格多列合并的实现
Nov 26 Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
Vue 事件的$event参数=事件的值案例
Jan 29 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
Vue如何清空对象
Mar 03 Vue.js
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
vue中data里面的数据相互使用方式
Jun 05 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 #Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 #Vue.js
vue项目proxyTable配置和部署服务器
Apr 14 #Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 #Vue.js
vue elementUI表格控制对应列
Apr 13 #Vue.js
vue项目打包后路由错误的解决方法
Apr 13 #Vue.js
vue的项目如何打包上线
You might like
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
jquery 实现窗口的最大化不论什么情况
2013/09/03 Javascript
js修改input的type属性问题探讨
2013/10/12 Javascript
解决Extjs4中form表单提交后无法进入success函数问题
2013/11/26 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
js实现div弹出层的方法
2014/11/20 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
vue轮播图插件vue-awesome-swiper的使用代码实例
2017/07/10 Javascript
create-react-app安装出错问题解决方法
2018/09/04 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
[00:32]2018DOTA2亚洲邀请赛Liquid出场
2018/04/03 DOTA
Python定时执行之Timer用法示例
2015/05/27 Python
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
django框架model orM使用字典作为参数,保存数据的方法分析
2019/06/24 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
解决keras模型保存h5文件提示无此目录问题
2020/07/01 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
建议书怎么写
2014/03/12 职场文书
2014年乡镇安全生产工作总结
2014/12/02 职场文书
导游词范文
2015/02/13 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2015年司机工作总结
2015/04/23 职场文书
年会主持人开场白台词
2015/05/29 职场文书
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
2021/06/29 Javascript