解决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 相关文章推荐
vue使用vant中的checkbox实现全选功能
Nov 17 Vue.js
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
vue中利用three.js实现全景图的完整示例
Dec 07 Vue.js
vue 使用 sortable 实现 el-table 拖拽排序功能
Dec 26 Vue.js
Vue多选列表组件深入详解
Mar 02 Vue.js
vue+django实现下载文件的示例
Mar 24 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
vue+spring boot实现校验码功能
May 27 Vue.js
Vue鼠标滚轮滚动切换路由效果的实现方法
Aug 04 Vue.js
vue css 相对路径导入问题级踩坑记录
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
php中的时间显示
2007/01/18 PHP
php汉字转拼音的示例
2014/02/27 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
PHP微商城开源代码实例
2019/03/27 PHP
jquery select(列表)的操作(取值/赋值)
2009/08/06 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
JavaScript面试开发常用的知识点总结
2016/08/08 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
JS前端基于canvas给图片添加水印
2020/11/11 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python中Flask-RESTful编写API接口(小白入门)
2019/12/11 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
伦敦香水公司:The London Perfume Company
2019/11/13 全球购物
美国领先的机场停车聚合商:Airport Parking Reservations
2020/02/28 全球购物
电话销售经理岗位职责
2013/12/07 职场文书
银行职员思想汇报
2013/12/31 职场文书
会计求职自荐信
2014/06/20 职场文书
个人授权委托书范文
2014/09/21 职场文书
教师节寄语2015
2015/03/23 职场文书
高中班主任培训心得体会
2016/01/07 职场文书