当前位置:首页 > React

react实现拦截器

2026-01-27 15:06:57React

React 拦截器实现方法

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

react实现拦截器

Axios 请求拦截器

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

react实现拦截器

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组件状态的方法 使用useState和useEffect钩子组合可以同步React组件的状态。useState用于声明状态变量,useEffect用于监听状态变化并执行副作用。 imp…

理解如何react

理解如何react

理解React的核心概念 React是一个用于构建用户界面的JavaScript库,专注于通过组件化开发提高代码的可维护性和复用性。其核心思想包括虚拟DOM(Virtual DOM)和单向数据流,能够…

react如何同步

react如何同步

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

如何构建react

如何构建react

构建 React 项目的步骤 安装 Node.js 和 npm 确保系统已安装 Node.js(包含 npm)。可通过命令行验证: node -v npm -v 使用 Create React Ap…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

react如何分

react如何分

React 分页实现方法 在 React 中实现分页功能可以通过多种方式完成,以下是几种常见的方法: 使用状态管理分页数据 在组件内部维护当前页码和每页数据量的状态,通过计算切片数据实现分页。…