vue全家桶进阶之路37:Vue3 路由守卫
在 Vue.js 3.x 中,我们可以使用路由守卫来拦截路由的跳转,从而实现一些功能,例如:登录验证、页面权限控制等。
Vue.js 3.x 中的路由守卫和 Vue.js 2.x 中的基本相同,都包含了 beforeEach
、beforeResolve
和 afterEach
等钩子函数。
下面是一些常见的路由守卫用法示例:
beforeEach
beforeEach
在跳转之前被调用,可以用来进行登录验证等操作。示例代码如下:
import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', component: Home }, { path: '/user/:id', component: User } ] }) router.beforeEach((to, from, next) => { // 验证是否已登录 const loggedIn = false if (to.path !== '/' && !loggedIn) { next('/') } else { next() } })
在上述示例中,我们使用 beforeEach
路由守卫验证用户是否已登录,如果没有登录则跳转到首页。
beforeResolve
beforeResolve
在跳转之前被调用,并且在 beforeEach
之后,可以用来进行一些异步操作等操作。示例代码如下:
import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', component: Home }, { path: '/user/:id', component: User, beforeResolve: async (to, from, next) => { // 异步操作 await someAsyncOperation() next() } } ] })
在上述示例中,我们使用 beforeResolve
路由守卫进行了一些异步操作,然后在操作完成后调用了 next
方法继续跳转。
afterEach
afterEach
在跳转完成之后被调用,可以用来进行一些页面操作等操作。示例代码如下:
import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', component: Home }, { path: '/user/:id', component: User } ] }) router.afterEach((to, from) => { // 页面操作 console.log(`从 ${from.path} 跳转到 ${to.path}`) })
在上述示例中,我们使用 afterEach
路由守卫进行了一些页面操作,例如在控制台中输出了跳转信息。
分类:
vue全家桶进阶之路
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!