当前位置:首页 > React

react里面如何做axios拦截

2026-01-26 05:56:56React

在React中使用Axios拦截器可以统一处理请求和响应,例如添加认证头、错误处理等。以下是具体实现方法:

创建Axios实例并设置拦截器

import axios from 'axios';

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

// 请求拦截器
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) {
      // 处理未授权情况
    }
    return Promise.reject(error);
  }
);

export default instance;

在组件中使用自定义实例

import React, { useEffect } from 'react';
import api from './axiosInstance'; // 导入自定义实例

function MyComponent() {
  useEffect(() => {
    api.get('/users')
      .then(data => console.log(data))
      .catch(error => console.error(error));
  }, []);

  return <div>Axios拦截器示例</div>;
}

全局错误处理

对于需要全局捕获的错误,可以在响应拦截器中统一处理:

instance.interceptors.response.use(
  response => response,
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 404:
          alert('请求资源不存在');
          break;
        case 500:
          alert('服务器错误');
          break;
        default:
          alert('未知错误');
      }
    }
    return Promise.reject(error);
  }
);

取消请求

在组件卸载时取消pending请求:

react里面如何做axios拦截

import { CancelToken } from 'axios';

useEffect(() => {
  const source = CancelToken.source();

  api.get('/users', {
    cancelToken: source.token
  });

  return () => {
    source.cancel('组件卸载取消请求');
  };
}, []);

以上方法实现了请求和响应的拦截处理,可根据实际需求调整拦截逻辑。注意拦截器执行顺序是后添加的先执行。

标签: 如何做里面
分享给朋友:

相关文章

react如何做title

react如何做title

如何在React中动态设置页面标题 使用React Helmet库可以轻松管理文档头部标签 安装依赖包npm install react-helmet或yarn add react-helmet 在组…

react icon 如何做

react icon 如何做

在 React 中使用图标的方法 安装图标库 React 项目可以通过流行的图标库(如 react-icons)快速集成图标。运行以下命令安装: npm install react-icons…

react 如何做源码分析

react 如何做源码分析

理解React源码结构 React源码托管在GitHub上,主要分为packages目录,包含核心模块如react、react-dom、scheduler等。每个模块功能独立,通过协同工作实现整体功能…

_react如何做性能优化

_react如何做性能优化

使用React.memo和useMemo优化组件渲染 React.memo用于缓存函数组件,避免不必要的重新渲染。只有当props发生变化时才会重新渲染。对于复杂计算,使用useMemo缓存计算结果,…

react里面如何使用document

react里面如何使用document

在 React 中使用 document React 通常推荐使用 React 的虚拟 DOM 和状态管理来操作 UI,但在某些情况下(如访问全局 DOM API、第三方库集成等),可能需要直接使用…

react如何做时间搜索框

react如何做时间搜索框

实现时间搜索框的基本步骤 在React中实现时间搜索框通常需要结合日期选择库(如react-datepicker)和状态管理。以下是一个完整的实现示例: 安装依赖库: npm install re…