解决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——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
vue中封装axios并实现api接口的统一管理
Dec 25 Vue.js
vue实现登录功能
Dec 31 Vue.js
如何在VUE中使用vue-awesome-swiper
Jan 04 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
详解vue身份认证管理和租户管理
May 25 Vue.js
Vue3如何理解ref toRef和toRefs的区别
Feb 18 Vue.js
Vue监视数据的原理详解
Feb 24 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 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
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
php获取数组中重复数据的两种方法
2013/06/28 PHP
PHP四舍五入精确小数位及取整
2014/01/14 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
浅谈重写window对象的方法
2014/12/29 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
基于jQuery选择器之表单对象属性筛选选择器的实例
2017/09/19 jQuery
Node.js readline模块与util模块的使用
2018/03/01 Javascript
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
详解组件库的webpack构建速度优化
2018/06/18 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
小程序如何获取多个formId实现详解
2019/09/20 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
[02:28]DOTA2亚洲邀请赛附加赛 RECAP赛事回顾
2015/01/29 DOTA
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
python 3.7.0 安装配置方法图文教程
2018/08/27 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python字符串中匹配数字的正则表达式
2019/07/03 Python
python自动识别文本编码格式代码
2019/12/26 Python
通过python实现windows桌面截图代码实例
2020/01/17 Python
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
区域销售经理职责
2013/12/22 职场文书
运动会入场词60字
2014/02/15 职场文书
初中军训感想300字
2014/03/05 职场文书
留学经费担保书
2014/05/12 职场文书
热门专业求职信
2014/05/24 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
倡议书的格式写法
2015/04/28 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python