vue 路由钩子

news2025/1/15 7:06:48

路由钩子分为三种

  • 全局钩子: beforeEach、 afterEach、beforeResolve
  • 单个路由里面的钩子: beforeEnter
  • 组件路由:beforeRouteEnter、 beforeRouteUpdate、 beforeRouteLeave

它的三个参数:

to: (Route路由对象) 即将要进入的目标 路由对象 to对象下面的属性: path params query hash fullPath matched name meta(在matched下,但是本例可以直接用)

from: (Route路由对象) 当前导航正要离开的路由

next: (Function函数) 一定要调用该方法来 resolve 这个钩子。 调用方法:next(参数或者空) ***必须调用

next(无参数的时候): 进行管道中的下一个钩子,如果走到最后一个钩子函数,那么 导航的状态就是 confirmed (确认的)

全局钩子

  1. beforeEach: 页面加载之前
  2. afterEach: 页面加载之后
  3. beforeResolve: 用的比较少,和beforeEach类似
router.beforeEach((to,from,next) => {
  console.log('beforeEach ===',to,from)
  next()
})

router.beforeResolve((to,from,next) => {
  console.log('beforeResolve ===',to,from)
  next()
})

router.afterEach((to,from) => {
  console.log('afterEach ===',to,from)
})

路由独享守卫

beforeEnter: 路由配置上直接定义 beforeEnter 守卫

  {
    path: '/',
    name: 'Home',
    component: Home,
    beforeEnter: (to,from,next) => {
      console.log('beforeEnter ==', to,from)
      next()
    }
  }

路由组件内的守卫

  1. beforeEach:在渲染该组件的对应路由被 confirm 前调用
  2. afterEach: 当前路由改变,但是该组件被复用时调用
  3. beforeResolve: 导航离开该组件的对应路由时调用
  beforeRouteEnter: (to,from,next) => {
    console.log('beforeRouteEnter ==', to,from)
    // 不!能!获取组件实例 `this`
    // 因为当钩子执行前,组件实例还没被创建
    next()
  },

  beforeRouteUpdate: (to,from,next) => {
    console.log('beforeRouteUpdate ==', to,from)
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    next()
  },

  beforeRouteLeave: (to,from,next) => {
    console.log('beforeRouteLeave ==', to,from)  // 可以访问组件实例 `this`
        // 业务使用场景:
    	// 1.清除定时器
    	// 2.当页面中有未关闭的窗口, 或未保存的内容时, 阻止页面跳转
    next()
  },

路由执行顺序

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/409752.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【前端知识体系梳理(三)】Diff策略

​ 目录 🍉前言 🍉传统Diff算法 🍉React Diff 🍓🍓🍓1、tree diff 🍓🍓🍓2、component diff 🍓🍓🍓3、element diff &#x1…

前端页面项目——博客系统

目录 1.实现博客列表页 1.1 实现导航栏 1.2 实现中间版心 1.3 实现个人信息 1.4 实现博客列表 2. 实现博客正文页 3. 实现博客登陆页 4. 实现博客编辑 4.1 实现编辑区 4.2 引入编辑器 展示 1)登录页面 2)博客列表页 3)博客详情页 4&am…

【JavaScript】手撕前端面试题:手写Object.create | 手写Function.call | 手写Function.bind

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 博主的前端之路(源创征文一等奖作品):前端之行,任重道远(来自大三学长的万字自述) 🖥️ TypeScript知识总结&…

PyQt5之进度条:QProgressBar

PyQt5之进度条:QProgressBar 在软件中,在处理特别冗长的任务时,如果没有相关的进度信息,这个等待的过程会比较考验用户的耐心,根据相关理论,进度条可以缓解用户在等待过程中的焦虑,所以&#x…

前端学习笔记(14)-Vue3组件传参

1.props&#xff08;父组件传递给子组件&#xff09;1.1 实现如果你没有使用 <script setup>&#xff0c;props 必须以 props 选项的方式声明&#xff0c;props 对象会作为 setup() 函数的第一个参数被传入&#xff1a;在子组件中&#xff1a;export default {props: {ti…

微信小程序头像昵称填写能力

1、基本介绍 微信小程序获取头像昵称的能力&#xff0c;最近又进行了一次调整&#xff0c;如果没有记错这是今年第三次调整了&#xff0c;每次调整每个开发者心中我相信都跟我一样&#xff0c;万马奔腾。。。今天写个demo体验下实际效果如何。 详细信息请见小程序用户头像昵称…

微信小程序实现PDF预览功能——pdf.js(含源码解析)

文章目录前言一、pdf.js 是什么&#xff1f;二、使用步骤1.下载库文件2.使用方式微信小程序端——使用 web-view 标签H5 端——使用 iframe 标签&#xff08;使用vue框架&#xff09;3.更改源码如何隐藏顶部工具栏如何让用户强制阅读一定时间如何获取pdf总页数如何获取pdf当前页…

【折腾电脑】Edge浏览器看B站视频卡顿最全解决办法合集

开头碎碎念&#xff1a;更新频率明显和疫情呈正相关&#xff0c;祝大家健健康康吃好喝好&#xff01; 使用Microsoft Edge浏览器观看B站视频&#xff0c;卡得无法忍受。 在网络上搜索相关问题&#xff0c;最早的一条是2016/04/17微软问题反馈的记录。任何原因的卡顿都是正常的&…

Vue样式穿透

Vue样式穿透 vue文件的style标签的scoped属性作用&#xff1a;PostCSS在元素标签上添加特殊属性值&#xff0c;在样式的选择器后面添加属性选择器&#xff0c;实现了组件样式的私有化&#xff0c;防止组件之间的样式污染&#xff08;比如相同类名的元素&#xff09;。 但在使…

【CSS】盒子模型内边距 ② ( 内边距复合写法 | 代码示例 )

文章目录一、内边距复合写法1、语法2、代码示例 - 设置 1 个值3、代码示例 - 设置 2 个值4、代码示例 - 设置 3 个值5、代码示例 - 设置 4 个值一、内边距复合写法 1、语法 盒子模型内边距 可以通过 padding-left 左内边距padding-right 右内边距padding-top 上内边距padding-…

前端开发服务器中的 Proxy 代理跨域实现原理解读

各位朋友你们好&#xff0c;我是桃小瑞&#xff0c;微信公众 桃小瑞。在这给大家拜个晚年&#xff0c;祝各位朋友新年快乐。 前言 在前端的开发过程中&#xff0c;尤其是在浏览器环境下&#xff0c;跨域是个绕不开的话题&#xff0c;相信每个前端都会涉及到这个问题&#xf…

“write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletR

1. 相关技术 springboot 2.6.3mybatis-spring-boot-starter 2.2.2mybatis 3.5.10fastjson 1.2.83hutool-all 5.7.22shiro-spring 1.8.0 2. 报错信息 "write javaBean error, fastjson version 1.2.83, class org.apache.shiro.web.servlet.ShiroHttpServletRequest, meth…

<router-view> can no longer be used directly inside <transition> or <keep-alive>.

百度翻译&#xff1a; &#xff1c;router view&#xff1e;不能直接在&#xff1c;transition&#xff1e;或&#xff1c;keep alive&#xff1e;中使用。 改用插槽道具&#xff1a; 运行环境&#xff1a; "vue": "^3.2.8", "vue-router": &quo…

idea的vue文件中使用ElementUi组件

作为计算机专业的学生&#xff0c;在做实训项目时很惆怅前端页面的搭建&#xff0c;这个时候就突出到了组件的好处&#xff1b; 这篇就是给大家展示使用ElementUi组件&#xff01;&#xff01;&#xff01; 内容上分为vue3和之前的版本&#xff0c;自行选择&#xff01;&#x…

33.JavaScript映射与集合(Map、Set)数据类型基础知识介绍与使用

文章目录映射与集合&#xff08;Map、Set&#xff09;映射&#xff08;Map&#xff09;Map常用的方法不要使用map[key]访问属性对象作为Map的键Map的遍历与迭代默认的迭代方式forEach()从数组、对象创建Map从数组、Map创建对象集合&#xff08;Set&#xff09;集合迭代总结映射…

Vuex 之一:3种拿到 state 中数据的方式与实例剖析

Ⅰ、Vuex 简介&#xff1a; 1、Vuex 是什么&#xff1f; 答&#xff1a;Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式&#xff1b; 而所谓状态就是指&#xff1a;组件中所维护的数据); (简而言之&#xff1a;就是状态管理&#xff0c;解决复杂组件数据通信&#xff0c…

React中实现keepalive组件缓存效果

背景&#xff1a;由于react官方并没有提供缓存组件相关的api&#xff08;类似vue中的keepalive&#xff09;&#xff0c;在某些场景&#xff0c;会使得页面交互性变的很差&#xff0c;比如在有搜索条件的表格页面&#xff0c;点击某一条数据跳转到详情页面&#xff0c;再返回表…

处理vue中的长按事件、点击事件、默认事件冲突

写在前面 示例是h5项目。技术栈&#xff1a;vue vant nuxt。 知识点简介&#xff1a; touchstart: // 手指放到屏幕上时触发 touchend: // 手指离开屏幕时触发 touchmove: // 手指在屏幕上滑动式触发 touchcancel: // 系统取消touch事件的时候触发 页面及需求&#xff1a; …

一文教会你何为重绘、回流?

文章目录css图层图层创建的条件重绘(Repaint)回流触发重绘的属性触发回流的属性常见的触发回流的操作优化方案requestAnimationFrame----请求动画帧写在最后学习目标&#xff1a; 了解前端Dom代码、css样式、js逻辑代码到浏览器展现过程了解什么是图层了解重绘与回流了解前端层…

【已失效】免翻在Chrome上使用新必应(New Bing)聊天机器人

已失效&#xff0c;暂时没时间去摸索&#xff0c;大家可以在评论区讨论&#xff0c;其实大家评论的我也尝试过了&#xff0c;并没有找到一个很完美的方式&#xff0c;有时间折腾再更新吧&#xff01;&#xff01; 这里不讲如何加入New Bing内测 文章目录【更新】免翻使用New B…