当前位置:首页 > 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里面如何获取

react里面如何获取

获取 DOM 元素的方法 在 React 中获取 DOM 元素通常使用 ref。以下是几种常见方式: 使用 useRef Hook(函数组件) import React, { useRef, us…

react如何做title

react如何做title

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

_react如何做性能优化

_react如何做性能优化

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

react滚动分页插件如何做

react滚动分页插件如何做

实现React滚动分页的常用方法 使用Intersection Observer API监听滚动 在React组件中创建一个IntersectionObserver实例,观察页面底部的"哨兵"元素。当…

react 如何做下拉菜单

react 如何做下拉菜单

使用 React 创建下拉菜单 基础实现(原生 HTML + React 状态) import { useState } from 'react'; function Dropdown() {…

react项目如何做反向代理

react项目如何做反向代理

反向代理的作用 反向代理可以帮助开发阶段解决跨域问题,或在生产环境隐藏真实服务器信息。React项目通常结合开发服务器或Nginx实现反向代理。 开发环境配置(Create React App) 在…