解决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+iview实现文件上传
Nov 17 Vue.js
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 Vue.js
解决vue下载后台传过来的乱码流的问题
Dec 05 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue 递归组件的简单使用示例
Jan 14 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
vue3.0中使用element的完整步骤
Mar 04 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue打包时去掉所有的console.log
Apr 10 Vue.js
vue 自定义组件添加原生事件
Apr 21 Vue.js
Vue操作Storage本地化存储
Apr 29 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中文转拼音的实现代码
2014/02/11 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
js运动框架_包括图片的淡入淡出效果
2013/05/11 Javascript
flash调用js中的方法,让js传递变量给flash的办法及思路
2013/08/07 Javascript
JS获取单击按钮单元格所在行的信息
2014/06/17 Javascript
javascript弹出窗口实现代码
2015/11/12 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
2016/05/05 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
JS实现根据用户输入分钟进行倒计时功能
2016/11/14 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
Python实现的HTTP并发测试完整示例
2020/04/23 Python
Python中的ctime()方法使用教程
2015/05/22 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
python实现函数极小值
2019/07/10 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
Python 定义只读属性的实现方式
2020/03/05 Python
利用matplotlib为图片上添加触发事件进行交互
2020/04/23 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
金融专业个人求职信范文
2013/11/28 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
python 中的jieba分词库
2021/11/23 Python