解决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实现小购物车功能
Dec 21 Vue.js
vue中配置scss全局变量的步骤
Dec 28 Vue.js
Vite和Vue CLI的优劣
Jan 30 Vue.js
vue浏览器返回监听的具体步骤
Feb 03 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
Vue提供的三种调试方式你知道吗
Jan 18 Vue.js
vue3获取当前路由地址
Feb 18 Vue.js
vue+iview实现手机号分段输入框
Mar 25 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 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和ACCESS写聊天室(六)
2006/10/09 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十一)
2014/06/25 PHP
PHP curl伪造IP地址和header信息代码实例
2015/04/27 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
2019/10/11 PHP
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
使用JQUERY Tabs插件宿主IFRAMES
2010/01/01 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
c#和Javascript操作同一json对象的实现代码
2012/01/17 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
js实现字符串和数组之间相互转换操作
2016/01/12 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
JS数组Reduce方法功能与用法实例详解
2020/04/29 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Python3安装psycopy2以及遇到问题解决方法
2019/07/03 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
python获取Pandas列名的几种方法
2019/08/07 Python
python中turtle库的简单使用教程
2020/11/11 Python
建筑施工实习自我鉴定
2013/09/19 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
超市商业计划书
2014/05/04 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
vue使用节流函数的踩坑实例指南
2021/05/20 Vue.js
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
实现一个简单得数据响应系统
2021/11/11 Javascript