当前位置:首页 > 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 封装拦截逻辑:

react实现拦截器

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 项目的关键方法 分析当前项目结构 通过评估现有组件、状态管理和依赖项,明确需要改进的部分。使用工具如 webpack-bundle-analyzer 识别性能瓶颈。 升级 Reac…

如何创建react

如何创建react

创建React项目的步骤 使用Create React App工具快速搭建React项目。确保已安装Node.js(版本需≥14.0.0)和npm(版本需≥5.6)。 打开终端或命令行工具,运行以下…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…

react如何同步

react如何同步

React 同步状态管理方法 在 React 中实现同步状态管理,可以通过以下多种方式实现: 使用 useState 和 useEffect 钩子 通过 useState 定义状态,使用 useEf…