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

我在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动画,用动画微调器或类似的控件替换“正在加载”消息-希望这会有所帮助!

上一篇:java-Spring JPA / Hibernate org.hibernate.AssertionFailure:实体中的null id(发生异常后不要刷新Session)


下一篇:如何使用Spring MVC拦截器更改发布的值