当前位置:首页 > 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 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

react如何销毁

react如何销毁

React 组件销毁的机制 在 React 中,组件的销毁通常由 React 的生命周期管理。当组件从 DOM 中移除时,React 会自动触发销毁相关的生命周期方法。以下是关键点: 组件的销毁通常…

react 如何分页

react 如何分页

分页实现方法 在React中实现分页功能可以通过多种方式完成,具体取决于数据来源(如API或本地数据)和UI库的选择。以下是常见的实现方法: 使用本地数据分页 对于存储在组件状态或Context中…

理解如何react

理解如何react

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

如何安装react

如何安装react

安装React的方法 方法一:使用Create React App(官方推荐) Create React App是官方提供的脚手架工具,适合快速搭建React项目。确保已安装Node.js(建议版本≥…

react如何调度

react如何调度

React 调度机制概述 React 的调度机制通过 Fiber 架构 和 Scheduler 模块实现任务优先级管理与时间切片(Time Slicing),确保高优先级更新(如用户交互)能快速响应,…