当前位置:首页 > React

react如何封装axios

2026-01-23 20:12:19React

封装 Axios 在 React 中的实现方法

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

创建 Axios 实例

import axios from 'axios';

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

添加请求拦截器

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) {
      switch (error.response.status) {
        case 401:
          console.error('未授权');
          break;
        case 404:
          console.error('资源不存在');
          break;
        default:
          console.error('服务器错误');
      }
    }
    return Promise.reject(error);
  }
);

封装常用请求方法

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

在组件中使用封装后的方法

import { http } from './api';

// 获取数据
const fetchData = async () => {
  try {
    const response = await http.get('/users');
    console.log(response);
  } catch (error) {
    console.error(error);
  }
};

// 提交数据
const submitData = async data => {
  try {
    const response = await http.post('/users', data);
    console.log(response);
  } catch (error) {
    console.error(error);
  }
};

封装为自定义 Hook

import { useState } from 'react';
import { http } from './api';

export const useHttp = () => {
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  const request = async (method, url, data = null) => {
    setLoading(true);
    try {
      const response = await http[method](url, data);
      setLoading(false);
      return response;
    } catch (err) {
      setError(err);
      setLoading(false);
      throw err;
    }
  };

  return { loading, error, request };
};

使用自定义 Hook

const { loading, error, request } = useHttp();

const fetchUsers = async () => {
  const users = await request('get', '/users');
  console.log(users);
};

const createUser = async userData => {
  const newUser = await request('post', '/users', userData);
  console.log(newUser);
};

封装注意事项

  1. 统一错误处理逻辑,避免在每个请求中重复处理
  2. 添加 loading 状态管理,便于 UI 显示加载状态
  3. 考虑添加请求取消功能,防止组件卸载后继续执行请求
  4. 对敏感信息进行适当处理,如 token 刷新机制
  5. 添加类型定义(TypeScript)提高代码可维护性

react如何封装axios

标签: reactaxios
分享给朋友:

相关文章

react 如何引入jquery

react 如何引入jquery

引入 jQuery 到 React 项目 在 React 项目中引入 jQuery 可以通过多种方式实现,但需要注意 React 和 jQuery 操作 DOM 的方式可能冲突,因此建议仅在必要时使用…

react如何读

react如何读

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

react如何动画

react如何动画

React 动画实现方法 React 中实现动画可以通过多种方式,包括原生 CSS、第三方库或 React 内置的动画解决方案。以下是几种常见方法: 使用 CSS 动画和过渡 通过 CSS 的 t…

react 如何调试

react 如何调试

调试 React 应用的方法 使用 React Developer Tools 安装 Chrome 或 Firefox 的 React Developer Tools 扩展,可以检查组件树、状态和 p…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

react项目如何调试

react项目如何调试

使用浏览器开发者工具 React项目调试最直接的方法是使用浏览器内置的开发者工具(Chrome DevTools/Firefox Developer Tools)。打开开发者工具后,切换到“Sourc…