当前位置: 首页 > article >正文

react axios 优化示例

使用 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) => {
   
    // 可以添加认证 token
    const 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.kler.cn/a/464721.html

相关文章:

  • 【大模型系列】MultiUI(2024.11)
  • 七大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序
  • 集线器,交换机,路由器,mac地址和ip地址知识记录总结
  • HTML——47.元素类型
  • 【机器学习】机器学习的基本分类-自监督学习-生成式方法(Generative Methods)
  • 七款领先的网络准入控制解决方案分享:智能准入,安全无忧
  • (NDSS2024)论文阅读——仅低质量的训练数据?用于检测加密恶意网络流量的稳健框架
  • Apache Dubbo反序列化漏洞
  • JDK的运作原理
  • 做一套手机UI自动化测试的全套系统,支持对Android、ios进行UI自动化测试,使用什么样的后端、前端、UI自动化框架、持续集成和部署方案
  • vue.js 非父子通信-事件总线
  • 动态规划解决不同的二叉搜索树问题
  • 游戏社交趋势下,游戏语音再升级!
  • Springboot的自动配置原理?
  • LeetCode题解:2625. 扁平化嵌套数组,递归
  • 解决chatgpt(mac app登陆)出现报错:获取您的 SSO 信息时出错
  • 如何利用动态IP采集数据?
  • 方正畅享全媒体新闻采编系统imageProxy存在任意文件读取漏洞
  • Java毕设项目:基于Springboot电影院在线选座订票系统设计与实现开题报告
  • 可扩展性设计架构模式——事件驱动架构