当前位置:首页 > React

react 实现拦截器

2026-01-27 12:45:00React

实现拦截器的基本思路

在React中实现拦截器通常用于在请求发送前或响应返回后统一处理逻辑,例如添加请求头、处理错误等。可以通过封装Axios或Fetch API来实现。

使用Axios实现拦截器

Axios本身支持请求和响应拦截器,以下是具体实现方式:

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com',
});

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

// 响应拦截器
instance.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    if (error.response.status === 401) {
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default instance;

使用Fetch API实现拦截器

Fetch API没有内置拦截器,但可以通过封装实现类似功能:

const fetchWithInterceptors = async (url, options = {}) => {
  // 请求拦截逻辑
  const token = localStorage.getItem('token');
  if (token) {
    options.headers = {
      ...options.headers,
      Authorization: `Bearer ${token}`,
    };
  }

  try {
    const response = await fetch(url, options);
    if (!response.ok) {
      throw new Error(response.statusText);
    }
    const data = await response.json();
    // 响应拦截逻辑
    return data;
  } catch (error) {
    if (error.message === 'Unauthorized') {
      window.location.href = '/login';
    }
    throw error;
  }
};

export default fetchWithInterceptors;

拦截器的常见用途

添加认证信息:自动在请求头中添加Token或其他认证信息。

react 实现拦截器

错误统一处理:拦截401或403错误,跳转到登录页面。

请求/响应数据转换:统一处理请求参数或响应数据格式。

react 实现拦截器

加载状态管理:在拦截器中显示或隐藏全局加载状态。

拦截器的注意事项

避免在拦截器中执行耗时操作,以免影响请求性能。

确保拦截器的逻辑是幂等的,避免重复执行导致问题。

在响应拦截器中正确处理错误,避免吞没错误信息。

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

相关文章

react如何更新

react如何更新

更新 React 版本的方法 检查当前 React 版本 运行以下命令查看项目中安装的 React 版本: npm list react 更新 React 及相关依赖 通过 npm 或 yarn…

如何同步react

如何同步react

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

react 如何启动

react 如何启动

创建 React 项目 使用官方工具 create-react-app 快速初始化项目,需提前安装 Node.js(版本 ≥ 14.0.0)和 npm/yarn: npx create-react-…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

react如何折叠

react如何折叠

在 React 中实现折叠功能 使用 useState 管理折叠状态 通过 useState 定义一个状态变量来控制折叠面板的显示与隐藏。例如: const [isCollapsed, setIsC…