解决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 打包的静态文件不能直接运行的原因及解决办法
Nov 19 Vue.js
Vue中强制组件重新渲染的正确方法
Jan 03 Vue.js
Vue ​v-model相关知识总结
Jan 28 Vue.js
Vue实现todo应用的示例
Feb 20 Vue.js
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
vue backtop组件的实现完整代码
Apr 07 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
VUE使用draggable实现组件拖拽
Apr 06 Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 Vue.js
vue3.0 数字翻牌组件的使用方法详解
Apr 20 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
实现“上一页”和“下一页按钮
2006/10/09 PHP
使用PHP下载CSS文件中的图片的代码
2013/09/24 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
PHP实现Soap通讯的方法
2014/11/03 PHP
json-lib出现There is a cycle in the hierarchy解决办法
2010/02/24 Javascript
关于js拖拽上传 [一个拖拽上传修改头像的流程]
2011/07/13 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
javascript 循环调用示例介绍
2013/11/20 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
2016/01/12 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
使用JavaScript实现链表的数据结构的代码
2017/08/02 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
JavaScript页面加载事件实例讲解
2019/09/01 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
在Python的Flask框架中验证注册用户的Email的方法
2015/09/02 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
2017/01/28 Python
Python3利用SMTP协议发送E-mail电子邮件的方法
2017/09/30 Python
Python字典操作详细介绍及字典内建方法分享
2018/01/04 Python
关于PyTorch源码解读之torchvision.models
2019/08/17 Python
python中的测试框架
2020/11/13 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
python 实现简易的记事本
2020/11/30 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
土耳其玩具商店:Toyzz Shop
2019/08/02 全球购物
技校教师求职简历的自我评价
2013/10/20 职场文书
预备党员的自我评价
2014/03/12 职场文书
贺卡寄语大全
2014/04/11 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
促销活动总结模板
2014/07/01 职场文书
党员个人剖析材料
2014/09/30 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
微信小程序和php的登录实现
2021/04/01 PHP