解决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 相关文章推荐
vuex的数据渲染与修改浅析
Nov 26 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
vue中如何自定义右键菜单详解
Dec 08 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
Vue实现简易购物车页面
Dec 30 Vue.js
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
Jan 22 Vue.js
Vue中避免滥用this去读取data中数据
Mar 02 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue实力踩坑之push当前页无效
Apr 10 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
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
ext实现完整的登录代码
2008/08/08 Javascript
jquery 按钮状态效果 正常、移上、按下
2013/08/12 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
2016/06/23 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
JS中min函数实例讲解
2019/02/18 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
layer 关闭指定弹出层的例子
2019/09/25 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
vue+swiper实现左右滑动的测试题功能
2020/10/30 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
Python操作Excel之xlsx文件
2017/03/24 Python
轻量级的Web框架Flask 中模块化应用的实现
2017/09/11 Python
Python3.6使用tesseract-ocr的正确方法
2018/10/17 Python
详解python读取和输出到txt
2019/03/29 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
python如何保存文本文件
2020/06/07 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
Kenneth Cole官网:纽约时尚优雅品牌
2016/11/14 全球购物
终止合同协议书
2014/04/17 职场文书
2014年教师党员公开承诺书
2014/05/28 职场文书
社区党建工作方案
2014/06/10 职场文书
质量月口号
2014/06/20 职场文书
作风整顿剖析材料
2014/09/30 职场文书
小学重阳节活动总结
2015/03/24 职场文书
k-means & DBSCAN 总结
2021/04/27 Python
pytorch中的model.eval()和BN层的使用
2021/05/22 Python