当前位置:首页 > React

react如何封装axios

2026-02-12 00:13:23React

封装axios的基本步骤

在React中封装axios可以提高代码复用性、统一错误处理和请求配置。以下是一个常见的封装方法:

创建独立的axios实例文件(如api.js):

import axios from 'axios';

const instance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {'Content-Type': 'application/json'}
});

请求拦截器处理

添加请求拦截器用于统一处理token等认证信息:

react如何封装axios

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

响应拦截器处理

添加响应拦截器统一处理响应数据和错误:

instance.interceptors.response.use(
  response => {
    if (response.data.code === 200) {
      return response.data;
    }
    return Promise.reject(response.data);
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401:
          // 处理未授权
          break;
        case 404:
          // 处理未找到
          break;
        default:
          console.error('请求错误');
      }
    }
    return Promise.reject(error);
  }
);

封装常用请求方法

封装GET、POST等常用方法:

react如何封装axios

export const get = (url, params) => instance.get(url, { params });
export const post = (url, data) => instance.post(url, data);
export const put = (url, data) => instance.put(url, data);
export const del = url => instance.delete(url);

使用示例

在组件中使用封装好的方法:

import { get, post } from './api';

// GET请求
get('/users', { page: 1 })
  .then(data => console.log(data))
  .catch(err => console.error(err));

// POST请求
post('/login', { username, password })
  .then(data => console.log(data))
  .catch(err => console.error(err));

高级配置选项

可添加更多自定义配置:

export const request = (options) => {
  return instance({
    method: options.method || 'get',
    url: options.url,
    params: options.params,
    data: options.data,
    ...options.config
  });
};

类型安全(TypeScript)

使用TypeScript增加类型定义:

interface ResponseData<T = any> {
  code: number;
  data: T;
  message: string;
}

export const get = <T>(url: string, params?: any): Promise<ResponseData<T>> => {
  return instance.get(url, { params });
};

这种封装方式提供了统一的错误处理、请求配置和响应处理,使项目中的HTTP请求更加规范且易于维护。

标签: reactaxios
分享给朋友:

相关文章

react如何记忆

react如何记忆

React 记忆技术 在 React 中,记忆(Memoization)是一种优化技术,用于避免不必要的重新渲染或计算。React 提供了多种内置方法和第三方库来实现记忆功能。 useMemo H…

电脑如何安装react

电脑如何安装react

安装 Node.js 和 npm React 依赖于 Node.js 和 npm(Node Package Manager)。从 Node.js 官网下载并安装最新稳定版本,安装完成后会自动包含 np…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一致…

理解如何react

理解如何react

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

react如何发音

react如何发音

React的发音 React的正确发音为 /riˈækt/,类似于“ree-akt”。以下是详细说明: 发音分解 第一个音节“Ree”发音类似英文单词“see”中的“ee”音。 第二个…