vue3守卫使用方法

2025-03-27 0 10

《vue3守卫使用方法》

在Vue3项目开发中,我们经常需要对路由进行一些控制,比如权限校验、页面加载前的准备等,这时候就可以使用路由守卫来解决。接下来将Vue3守卫的使用方法。

1. 简单配置全局前置守卫

在项目的router/index.js文件中进行简单的全局前置守卫配置就能解决问题。这种守卫会在每个路由切换之前执行。

javascript
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'</p>

<p>const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  // 其他路由
]</p>

<p>const router = createRouter({
  history: createWebHistory(),
  routes
})</p>

<p>// 全局前置守卫
router.beforeEach((to, from, next) => {
  console.log('全局前置守卫');
  // 这里可以做一些通用的逻辑判断
  // 比如权限校验,如果用户没有登录且访问的是非公开页面就跳转到登录页
  // if (!isLogin && to.meta.requiresAuth) {
  //   next({name: 'Login'})
  // }
  next()
})</p>

<p>export default router

2. 组件内的守卫

有时候我们希望针对某个组件单独设置守卫逻辑,可以在组件内部定义守卫。

html

  <div>
    <!-- 组件内容 -->
  </div>
</p>


export default {
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不能获取组件实例 `this`
    // 因为当钩子执行前,组件实例还没被创建
    console.log('组件内进入守卫');
    next();
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    console.log('组件内更新守卫');
    next();
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开该组件的对应路由时调用
    console.log('组件内离开守卫');
    next();
  }
}


<p>

3. 全局后置钩子

它不会接收next函数也不会改变导航结果,只是用于在导航完成后做一些事情。

javascript
router.afterEach((to, from) => {
console.log('全局后置钩子');
// 可以在这里做页面标题的修改等操作
})

通过以上几种方式,我们就可以根据不同的业务需求灵活地使用Vue3中的路由守卫了,从而更好地控制路由的切换逻辑。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载