前言
今天在做react后台管理的时候要实现一个全局Loading效果,通常使用axios库与后端进行数据交互。为了更好的用户体验,在每次请求前添加一个加载效果,让用户知道在等待加载。
要实现这个功能,我们可以在每个组件请求手动添加加载效果返回后再将其隐藏,但如果每个请求都这么做,就要做多次重复设置显得很麻烦,但好处是可以设置定制多种请求效果。但考虑到该项目场景为后台管理系统,给管理员使用,花样可以不用搞太多,统一优雅即可,故采取全局设置loading效果。
开发版本
"react": "^16.13.1",
"antd": "^4.0.4",
"axios": "^0.19.2"
代码说明
通过 axios 提供的请求拦截和响应拦截的接口,控制 loading 的显示或者隐藏。在此我还设置了没有网络和网络超时的提示信息
采用antd的Spin组件来实现loading效果,message组件来进行消息提示(antd.css这里没有引入,是因为我设置了按需加载)
定义变量requestCount作为计数器,确保同一时刻如果有多个请求的话,不会同时添加多个 loading,而是只有1个,并在所有请求结束后才会隐藏 loading。
默认所有请求都会自动有 loading 效果。如果某个请求不需要 loading 效果,可以在请求 headers 中设置 isLoading 为false。
步骤
1.在src目录下新建一个文件axios.js
import axios from 'axios&