当前位置:首页 > React

react如何封装axios

2026-01-23 20:12:19React

封装 Axios 在 React 中的实现方法

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

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)提高代码可维护性

标签: reactaxios
分享给朋友:

相关文章

react如何收录

react如何收录

React 收录方法 React 的收录主要涉及搜索引擎优化(SEO)和预渲染技术。由于 React 是单页应用(SPA),默认情况下内容由 JavaScript 动态生成,可能导致搜索引擎爬虫难以收…

如何开发react

如何开发react

开发React应用的基本步骤 安装Node.js和npm 确保系统中已安装Node.js(包含npm)。可通过官网下载安装包,安装后验证版本: node -v npm -v 创建React项目…

react如何刷新

react如何刷新

刷新React组件的方法 使用状态更新触发重新渲染 通过更新组件的状态可以触发重新渲染。React会在状态变化时自动重新渲染组件。 const [count, setCount] = useStat…

如何关闭react

如何关闭react

关闭React应用的步骤 在开发或运行React应用时,可能需要关闭正在运行的开发服务器或停止应用。以下是几种常见情况的处理方法: 停止开发服务器 如果正在使用npm start或yarn star…

react如何引入

react如何引入

引入React的方法 React可以通过多种方式引入项目,具体取决于项目需求和开发环境。以下是常见的几种方法: 通过CDN引入 在HTML文件中直接通过CDN链接引入React和ReactDOM:…

react如何引入echarts

react如何引入echarts

安装 ECharts 依赖 在 React 项目中安装 ECharts 核心库和 React 封装库: npm install echarts echarts-for-react 基础引入方式 创建…