解决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项目利用axios请求接口下载excel
Nov 17 Vue.js
vue-calendar-component 封装多日期选择组件的实例代码
Dec 04 Vue.js
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
为什么推荐使用JSX开发Vue3
Dec 28 Vue.js
SpringBoot+Vue 前后端合并部署的配置方法
Dec 30 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
基于vue的video播放器的实现示例
Feb 19 Vue.js
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
vue-element-admin项目导入和导出的实现
May 21 Vue.js
Vue elementUI表单嵌套表格并对每行进行校验详解
Feb 18 Vue.js
vue如何使用模拟的json数据查看效果
Mar 31 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图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
详谈php中 strtr 和 str_replace 的效率问题
2017/05/14 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
Javascript的闭包
2009/12/31 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
jquery判断RadioButtonList和RadioButton中是否有选中项示例
2013/09/29 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
IE浏览器中图片onload事件无效的解决方法
2014/04/29 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
js实现3D图片逐张轮播幻灯片特效代码分享
2015/09/09 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
在vue中获取dom元素内容的方法
2017/07/10 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
python网络编程示例(客户端与服务端)
2014/04/24 Python
Python3基础之基本数据类型概述
2014/08/13 Python
使用grappelli为django admin后台添加模板
2014/11/18 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python完成哈夫曼树编码过程及原理详解
2019/07/29 Python
python子线程退出及线程退出控制的代码
2019/10/16 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
Python读取YAML文件过程详解
2019/12/30 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
美国手机支架公司:PopSockets
2019/11/27 全球购物
俄罗斯香水和化妆品网上商店:NOTINO.ru
2019/12/17 全球购物
全球最大化妆品零售网站:SkinStore
2020/10/24 全球购物
给校长的建议书200字
2014/05/16 职场文书
离婚起诉书范本
2015/05/18 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
《群青的幻想曲》京力秋树角色PV公开
2022/04/08 日漫