解决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 相关文章推荐
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
Vue.extend 登录注册模态框的实现
Dec 29 Vue.js
vue 动态创建组件的两种方法
Dec 31 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
Vue详细的入门笔记
May 10 Vue.js
Vue实现动态查询规则生成组件
May 27 Vue.js
vue+spring boot实现校验码功能
May 27 Vue.js
详解Vue的列表渲染
Nov 20 Vue.js
vue使用echarts实现折线图
Mar 21 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实现utf-8和GB2312编码相互转换函数代码
2013/02/07 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php程序总是提示验证码输入有误解决方案
2015/01/07 PHP
PHP中应该避免使用同名变量(拆分临时变量)
2015/04/03 PHP
PHP模板引擎Smarty内建函数section,sectionelse用法详解
2016/04/11 PHP
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
javascript中clone对象详解
2014/12/03 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
vue2组件实现懒加载浅析
2017/03/29 Javascript
vue-router实现webApp切换页面动画效果代码
2017/05/25 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue组件实现弹出框点击显示隐藏效果
2020/10/26 Javascript
浅谈React碰到v-if
2018/11/04 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
深入理解Python装饰器
2016/07/27 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
numba提升python运行速度的实例方法
2021/01/25 Python
HTML5新增的标签和属性归纳总结
2018/05/02 HTML / CSS
植村秀美国官网:Shu Uemura美国
2019/03/19 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
转预备党员政审材料
2014/02/06 职场文书
职业女性的职业规划
2014/03/04 职场文书
道路建设实施方案
2014/03/18 职场文书
英文演讲稿开场白
2014/08/25 职场文书
初三英语教学计划
2015/01/23 职场文书
2016教师节感恩话语
2015/12/09 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏