当前位置:首页 > VUE

vue怎么实现拦截

2026-01-14 23:48:09VUE

Vue 实现拦截的方法

在 Vue 中可以通过路由守卫、全局拦截器、Axios 拦截器等方式实现拦截功能。

路由守卫拦截

路由守卫是 Vue Router 提供的功能,可以在导航过程中进行拦截。

vue怎么实现拦截

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

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !isAuthenticated()) {
    next('/login')
  } else {
    next()
  }
})

Axios 请求拦截

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

axios.interceptors.request.use(
  config => {
    config.headers.Authorization = 'Bearer ' + getToken()
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

axios.interceptors.response.use(
  response => {
    return response
  },
  error => {
    if (error.response.status === 401) {
      router.push('/login')
    }
    return Promise.reject(error)
  }
)

全局混入拦截

通过 Vue.mixin 可以实现全局方法拦截。

vue怎么实现拦截

Vue.mixin({
  created() {
    this.$options.methods && Object.keys(this.$options.methods).forEach(key => {
      const originalMethod = this.$options.methods[key]
      this.$options.methods[key] = function(...args) {
        console.log(`拦截方法 ${key}`)
        return originalMethod.apply(this, args)
      }
    })
  }
})

自定义指令拦截

通过自定义指令可以拦截 DOM 操作。

Vue.directive('intercept', {
  bind(el, binding) {
    el.addEventListener('click', e => {
      if (!binding.value()) {
        e.preventDefault()
        e.stopPropagation()
      }
    })
  }
})

组件生命周期钩子

利用组件生命周期钩子可以实现组件级别的拦截。

export default {
  beforeRouteEnter(to, from, next) {
    next(vm => {
      // 访问组件实例
    })
  },
  beforeRouteLeave(to, from, next) {
    if (confirm('确定离开吗?')) {
      next()
    } else {
      next(false)
    }
  }
}

这些方法可以根据实际需求选择使用或组合使用,实现不同层次的拦截功能。路由守卫适合页面导航拦截,Axios 拦截器适合 API 请求拦截,全局混入和自定义指令可以实现更细粒度的拦截控制。

标签: vue
分享给朋友:

相关文章

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(如…

vue 实现pc

vue 实现pc

Vue 实现 PC 端应用的核心要点 Vue.js 是一个渐进式框架,适合构建 PC 端单页应用(SPA)或复杂的前端界面。以下是实现 PC 端应用的关键方法和注意事项: 项目初始化与工程化配置 使…

ssh vue 实现

ssh vue 实现

使用SSH连接Vue项目部署的服务器 在Vue项目开发或部署过程中,可能需要通过SSH连接到远程服务器进行配置或维护。以下是实现SSH连接并部署Vue项目的关键步骤: 生成SSH密钥对 在本地终端运…

vue实现上传

vue实现上传

Vue 文件上传实现方法 使用 Vue 实现文件上传可以通过原生 HTML5 的 <input type="file"> 元素结合 Vue 的事件处理和数据绑定来实现。 基础实现步骤…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…