react axios 优化示例

ops/2025/1/6 4:57:50/

使用 axios 是 React 项目中非常常见的 HTTP 请求库。为了提升 axios 在 React 中的性能、可维护性和用户体验,我们可以从 代码组织、请求优化 和 用户体验优化 多个角度进行详细的优化。

一、安装与基础配置

安装 axios

npm install axios

创建 Axios 实例

为了更好地管理请求配置和减少重复代码,建议创建 Axios 实例。

axios.js

import axios from "axios";const axiosInstance = axios.create({baseURL: "https://api.example.com", // API 的基础路径timeout: 10000, // 请求超时时间headers: {"Content-Type": "application/json",},
});// 请求拦截器
axiosInstance.interceptors.request.use((config) => {// 可以添加认证 tokenconst token = localStorage.getItem("token");if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;},(error) => {return Promise.reject(error);}
);// 响应拦截器
axiosInstance.interceptors.response.use((response) => {return response.data; // 直接返回数据,简化调用},(error) => {if (error.response?.status === 401) {// 处理未授权逻辑window.location.href = "/login";}return Promise.reject(error);}
);
export default axiosInstance;

二、请求优化实践

1. 数据缓存

使用 React Query 或 SWR 实现数据缓存
结合 axios 使用 React Query 或 SWR,自动缓存数据,避免重复请求。

React Query 实现示例:

import { useQuery } from "react-query";
import axiosInstance from "./axios";const fetchData = async () => {const response = await axiosInstance.get("/data");return response;
};const MyComponent = () => {const { data, error, isLoading } = useQuery("dataKey", fetchData);if (isLoading) return 

http://www.ppmy.cn/ops/147435.html

相关文章

微信小程序中的 storage(本地存储)和内存是两个完全不同的存储区域

这是一个非常关键且容易混淆的概念 既然 this.globalData.appId appId 是将 appId 存储在内存中,为什么微信小程序中的 wx.getStorage 和 wx.setStorage(本地存储)中没有 appId,并且您提出了一个非常重要的疑问:stor…

【行空板K10】利用Nanomq的桥接转发能力实现接入任意的MQTT服务器

目录 引言 K10程序的编写 运行Nanomq 设置Nanomq的桥接到巴法云 结语 引言 行空板K10作为一块物联网开发板,内置了MQTT的支持,不过它的MQTT有限制,只支持阿里云、OneNet、EasyIoT和SIoT4种MQTT服务器。这对想使用其他MQTT服务器的用户来…

【剑指Offer刷题系列】树的子结构

目录 问题描述示例示例 1:示例 2:提示 思路解析核心思路:具体步骤:复杂度分析: 代码实现Python 实现 测试代码复杂度分析时间复杂度空间复杂度 问题描述 给定两棵二叉树 tree1 和 tree2,判断 tree2 是否是…

快速将索尼手机联系人导出为 HTML 文件

我想将 Sony Xperia 手机上的联系人导出到计算机上进行备份,并在需要时进行编辑。这可以做到吗?如何做到?作为助手我需要下载什么工具吗? 当您的 Android 手机上存储了如此多的重要联系人,而您又不想丢失它们时&#…

Spring源码分析之事件机制——观察者模式(三)

目录 自定义事件 事件监听器 事件发布者(服务层) 使用示例controller层 Spring源码分析之事件机制——观察者模式(一)-CSDN博客 Spring源码分析之事件机制——观察者模式(二)-CSDN博客 这两篇文章是这…

Java Web学生自习管理系统

一、项目背景与需求分析 随着网络技术的不断发展和学校规模的扩大,学生自习管理系统的需求日益增加。传统的自习管理方式存在效率低下、资源浪费等问题,因此,开发一个智能化的学生自习管理系统显得尤为重要。该系统旨在提高自习室的利用率和管…

Jenkins 中自动化部署 Spring Boot 项目

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

大数据新视界 -- Hive 临时表与视图的应用场景(下)(30 / 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的博客,正是这样一个温暖美好的所在。在这里,你们不仅能够收获既富有趣味又极为实…