解决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中使用mockjs代码实例
Nov 25 Vue.js
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
简单聊聊Vue中的计算属性和属性侦听
Oct 05 Vue.js
Vue组件更新数据v-model不生效的解决
Apr 02 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue动态绑定style样式
Apr 20 Vue.js
Vue组件化(ref,props, mixin,.插件)详解
May 15 Vue.js
Vue Element plus使用方法梳理
Dec 24 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
菜鸟修复电子管记
2021/03/02 无线电
PHP array_push 数组函数
2009/12/26 PHP
PHP var_dump遍历对象属性的函数与应用代码
2010/06/04 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
AngularJS入门之动画
2016/07/27 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
Vue微信项目按需授权登录策略实践思路详解
2018/05/07 Javascript
浅谈PDF.js使用心得
2018/06/07 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python multiprocess pool模块报错pickling error问题解决方法分析
2019/03/20 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
python3获取url文件大小示例代码
2019/09/18 Python
python dumps和loads区别详解
2020/02/04 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
连卡佛中国官网:Lane Crawford中文站
2018/01/27 全球购物
幼儿园招生广告
2014/03/19 职场文书
付款委托书范本
2014/04/04 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
《鸿门宴》教学反思
2014/04/22 职场文书
法制宣传月活动方案
2014/05/11 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
股东大会通知
2015/04/24 职场文书
员工辞职信范文大全
2015/05/12 职场文书
赢在中国观后感
2015/06/02 职场文书
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS