当前位置:首页 > VUE

vue怎么实现拦截

2026-03-28 12:56:37VUE

Vue 实现拦截的方法

在 Vue 中实现拦截通常涉及以下几种场景:路由拦截、HTTP 请求拦截、全局状态拦截等。以下是具体的实现方法。

路由拦截(导航守卫)

Vue Router 提供了导航守卫功能,可以在路由跳转前、跳转后或跳转过程中进行拦截处理。

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // 检查是否需要登录
  if (to.matched.some(record => record.meta.requiresAuth)) {
    if (!isAuthenticated()) {
      next({ path: '/login' })
    } else {
      next()
    }
  } else {
    next()
  }
})

HTTP 请求拦截(Axios)

使用 Axios 拦截器可以在请求发送前或响应返回后进行拦截处理。

vue怎么实现拦截

import axios from 'axios'

// 请求拦截器
axios.interceptors.request.use(
  config => {
    const token = localStorage.getItem('token')
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// 响应拦截器
axios.interceptors.response.use(
  response => {
    return response
  },
  error => {
    if (error.response.status === 401) {
      // 跳转到登录页
      window.location.href = '/login'
    }
    return Promise.reject(error)
  }
)

全局状态拦截(Vuex)

通过 Vuex 的插件或中间件机制,可以在状态变更前后进行拦截处理。

const store = new Vuex.Store({
  state: { ... },
  mutations: { ... },
  plugins: [
    store => {
      store.subscribe((mutation, state) => {
        // 拦截状态变更
        if (mutation.type === 'SOME_MUTATION') {
          console.log('状态已变更:', mutation.payload)
        }
      })
    }
  ]
})

组件生命周期拦截

在组件生命周期钩子中可以进行拦截处理,例如在 beforeCreatebeforeMount 时检查权限。

vue怎么实现拦截

export default {
  beforeCreate() {
    if (!isAuthenticated()) {
      this.$router.push('/login')
    }
  }
}

自定义指令拦截

通过自定义指令可以在 DOM 元素上实现拦截逻辑。

Vue.directive('permission', {
  inserted(el, binding) {
    const { value } = binding
    if (!hasPermission(value)) {
      el.parentNode.removeChild(el)
    }
  }
})

使用方法:

<button v-permission="'admin'">仅管理员可见</button>

以上方法涵盖了 Vue 中常见的拦截场景,可以根据实际需求选择合适的方式。

标签: vue
分享给朋友:

相关文章

vue 移动端实现签名

vue 移动端实现签名

Vue 移动端签名实现方法 在移动端实现签名功能,可以通过HTML5的Canvas结合触摸事件完成。以下是具体实现步骤: 使用Canvas绘制签名 安装vue-signature-pad插件或直接使…

vue实现选区

vue实现选区

Vue 实现选区的基本方法 在Vue中实现选区功能通常涉及DOM操作和事件处理。以下是几种常见的方法: 使用原生JavaScript的Selection API 通过window.getSelec…

vue实现类别

vue实现类别

Vue 实现类别的几种方法 在 Vue 中实现类别功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-bind:class 动态绑定类名 通过对象语法或数组语法动态绑定类名,根据条件添加或移…

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…

vue实现计算

vue实现计算

Vue 实现计算的方法 在 Vue 中实现计算功能可以通过多种方式完成,主要包括计算属性(computed)、方法(methods)和侦听器(watch)。以下是具体的实现方法: 计算属性(Comp…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…