当前位置:首页 > React

react实现拦截器

2026-01-27 15:06:57React

React 拦截器实现方法

在 React 中实现拦截器通常用于拦截 HTTP 请求或路由跳转,以下是常见的实现方式:

Axios 请求拦截器

通过 Axios 的拦截器功能可以在请求发送前或响应返回后统一处理:

import axios from 'axios';

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 添加 token 等通用逻辑
    config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
    return config;
  },
  error => Promise.reject(error)
);

// 响应拦截器
axios.interceptors.response.use(
  response => response.data,
  error => {
    if (error.response.status === 401) {
      // 跳转登录页等处理
    }
    return Promise.reject(error);
  }
);

路由拦截器(React Router)

通过高阶组件或自定义路由组件实现路由跳转拦截:

import { Route, Redirect } from 'react-router-dom';

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={props =>
      localStorage.getItem('token') ? (
        <Component {...props} />
      ) : (
        <Redirect to="/login" />
      )
    }
  />
);

自定义 Hook 拦截器

通过自定义 Hook 封装拦截逻辑:

import { useEffect } from 'react';
import { useHistory } from 'react-router-dom';

const useAuthInterceptor = () => {
  const history = useHistory();

  useEffect(() => {
    const unlisten = history.listen((location) => {
      if (!localStorage.getItem('token') && location.pathname !== '/login') {
        history.push('/login');
      }
    });
    return () => unlisten();
  }, [history]);
};

// 在根组件调用
// useAuthInterceptor();

注意事项

  1. 请求拦截器适用于全局 API 调用时的统一处理(如 token 注入)。
  2. 路由拦截器适合页面级权限控制。
  3. 对于函数组件,优先使用自定义 Hook 方案。
  4. 清除拦截器时需保存引用:
    const myInterceptor = axios.interceptors.request.use(...);
    axios.interceptors.request.eject(myInterceptor);

react实现拦截器

标签: 拦截器react
分享给朋友:

相关文章

如何学习react

如何学习react

学习 React 的步骤 理解基础概念 React 是一个用于构建用户界面的 JavaScript 库。学习 React 之前,建议掌握 JavaScript 的基础知识,包括 ES6+ 语法(如箭头…

react 如何引入css

react 如何引入css

在 React 中引入 CSS 的方法 React 提供了多种引入 CSS 的方式,可以根据项目需求选择合适的方法。以下是常见的几种方式: 内联样式 内联样式直接在组件中通过 style 属性定义…

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app np…

如何手写一个react

如何手写一个react

手写一个简单的 React 创建一个基础的 React 实现需要理解其核心概念:虚拟 DOM、组件、状态管理和渲染。以下是一个简化版的 React 实现。 创建虚拟 DOM 虚拟 DOM 是真实…

react性能如何

react性能如何

React 性能特点 React 通过虚拟 DOM(Virtual DOM)和高效的 diff 算法优化性能。虚拟 DOM 减少了直接操作真实 DOM 的开销,仅在必要时更新变化的部分。React 的…