如何在 React 项目的 axios 拦截器中添加全局加载/旋转效果

2024-01-03

我在 React 项目中使用 axios 进行 API 调用,我想在 axios 拦截器中的 api 调用的请求和响应之间全局添加加载或旋转效果,这是我的拦截器的代码。

import Axios from 'axios'

Axios.interceptors.request.use(function (config) {
  // spinning start to show
  const token = window.localStorage.token;
  if (token) {
     config.headers.Authorization = `token ${token}`
  }
  return config
}, function (error) {
  return Promise.reject(error);
});

Axios.interceptors.response.use(function (response) {
  // spinning hide
  return response;
}, function (error) {
  return Promise.reject(error);
});

也许您可以采取更简单的方法,在您的应用程序忙于通过 axios 加载数据时显示全屏加载消息?

例如,您可以在代码/项目中添加以下内容,以便在 axio 请求期间在屏幕上显示全局“加载消息”:

CSS:

/* Define css class for global loading message to cover 
   screen during axios operations */

.loading-indicator:before {
    content: '';
    background: #000000cc;
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    z-index: 1000;
}

.loading-indicator:after {
    content: 'Loading';
    position: fixed;
    width: 100%;
    top: 50%;
    left: 0;
    z-index: 1001;
    color:white;
    text-align:center;
    font-weight:bold;
    font-size:1.5rem;        
}

JavaScript:

Axios.interceptors.request.use(function (config) {

  // spinning start to show
  // UPDATE: Add this code to show global loading indicator
  document.body.classList.add('loading-indicator');

  const token = window.localStorage.token;
  if (token) {
     config.headers.Authorization = `token ${token}`
  }
  return config
}, function (error) {
  return Promise.reject(error);
});

Axios.interceptors.response.use(function (response) {

  // spinning hide
  // UPDATE: Add this code to hide global loading indicator
  document.body.classList.remove('loading-indicator');

  return response;
}, function (error) {
  return Promise.reject(error);
});

使用这种方法,您甚至可以使用 CSS3 动画将“正在加载”消息替换为动画旋转器或类似的东西 - 希望这会有所帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 React 项目的 axios 拦截器中添加全局加载/旋转效果 的相关文章

随机推荐

  • word插件中弹出对话框

    我正在使用 C 创建一个 MS Office Word 插件 我有一条带有几个按钮的丝带 单击其中一个按钮时 我需要一个带有几个文本框的弹出窗口 问题 如何在word插件中创建弹出对话框 将新表单添加到您的加载项项目并根据需要进行设计 在按
  • mysql - 今天位于两个列值之间

    id first datetime last datetime 1 2013 04 15 00 00 00 2013 04 21 23 59 00 2 2013 04 08 00 00 00 2013 04 14 23 59 00 3 20
  • IIS URL 重写 {R:N} 说明

    我一直无法理解 R N 的目的 谁能澄清一下何时使用 R 0 vs R 1 用法示例
  • 如何减少 Blazor WebAssembly 的加载时间

    我正在开发 Blazor WebAssembly 应用程序 加载时间超过30s 这是正常的吗 我的临时链接 http chhinsras 001 site1 itemurl com http chhinsras 001 site1 item
  • Python/Selenium/Chrome 不同错误的冲突解决方案

    一周左右的时间里 我遇到了一系列令人讨厌的 Selenium Chrome 错误 一段时间内一切正常 但突然间就不行了 我有适合我的 Google Chrome 版本 89 0 4389 114 的 Chromedriver 版本 89 0
  • 复制省略可以在synchronize-with 语句之间发生吗?

    在下面的示例中 如果我们暂时忽略互斥锁 复制省略可能会消除对复制构造函数的两次调用 user type foo unique lock lock global mutex return user type user type result
  • 将锚点向右对齐

    考虑以下 a a a a b a 如何将第二个锚点 b 向右对齐 PS 在这种情况下浮动是一种滥用 它不是为此而设计的 它会导致一些问题 所以我需要其他更合理的解决方案 只需这样做 style float right Like div a
  • IpOverUsbSvc 错误 Windows Phone 开发人员注册 [重复]

    这个问题在这里已经有答案了 当我尝试注册我的 Windows Phone 设备时Windows Phone 开发者注册 I get 无法连接到手机 该消息还指出 对于 Windows Phone 8 手机 请确保 Windows 手机 IP
  • Python-Flask 不接受自定义字体

    文件夹蓝图 模板 文件 html Static Fonts Style 在CSS文件中 我尝试过 font face font family
  • 获取上季度的结束日期

    对于给定日期 如何获取上季度的结束日期 我需要运行一项工作 其中考虑到了这一点 编辑 第一季度是一月 二月 三月 2号是四月 五月 六月等 任何帮助表示赞赏 谢谢 基本上 找出当前季度是哪个 返回上一季度的最后日期 3月31日 6月30日
  • 为 Linux 应用程序创建安装程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在开发一个小型跨平台应用程序 我需要一些有关如何在 Linux 中安装它的建议 我在 Window
  • 有CUDA智能指针吗?

    如果没有 释放的标准方法是什么cudaMalloc当抛出异常时ed内存 请注意 我无法使用 Thrust 您可以使用RAII http en wikipedia org wiki Resource Acquisition Is Initia
  • 使用 Laravel 在 FullCalendar 中重复发生事件

    I m working on a fullcalendar module for my page I could display Events on calendar without the recurring feature But wh
  • 是否存在始终返回零结果的 SQL 查询? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如果有特定于 MySQL PostgreSQL Oracle 的解决方案 我对它们都很好奇 根据 DBMS 以下一项或多项将起作用 S
  • 如何获取要显示的类型提示?

    我见过 youtube 等人使用 rust analyzer 插件在 VSC 中使用 Rust 他们会显示可选的类型注释 即使它不一定写在代码中 就像我打字一样foo a b 在编辑器中 它会自动显示foo a A b B 哪里的 A an
  • 取消引用指向结构体指针的指针

    gcc 4 7 2 c89 Hello 我试图取消引用指向结构体指针的指针 当我执行以下操作时 我收到此错误消息 LOG INFO CHANNEL ID d channel gt id 编译错误 request for member id
  • 连接黄瓜检查java中的场景失败

    当我正在阅读如何在失败时为黄瓜场景添加清理时 我在互联网上找到了这段代码 After do s if s failed If you are on an iOS Device driver quit sleep time for drive
  • 为什么我不能通过继承 OrderedDict 和 defaultdict 来创建默认的有序字典?

    我第一次尝试将两个词典的功能结合起来collectionsmodule 的作用是创建一个继承它们的类 from collections import OrderedDict defaultdict class DefaultOrderedD
  • 我可以对 WordPress.com 上托管的网站使用 REST API [已关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我在 WordPress com 上托管了一个博客 当我尝试制作一个GET请求检索帖子时我收到 未找到 html 页面 https alex
  • 如何在 React 项目的 axios 拦截器中添加全局加载/旋转效果

    我在 React 项目中使用 axios 进行 API 调用 我想在 axios 拦截器中的 api 调用的请求和响应之间全局添加加载或旋转效果 这是我的拦截器的代码 import Axios from axios Axios interc