在项目中经常会有在请求前后加loading或者加加载进度条,一般这些组件都会抽离出来作为全局组件

进度条的插件貌似都不是很符合自己项目中的需求,于是。。

参考nprogress样式,自己在项目中封装组件,实现简单的顶部加载进度条。效果如下

组件放到components文件夹下,新建progress文件夹

progress/index.jsx

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import './progress.less' let defaultState = {show:false}
class Progress extends Component {
constructor(props, context){
super(props, context)
this.state = {...defaultState}
} start(){ // 开始显示
this.setState({
show:true
})
} done(){ // 结束隐藏
this.setState({
show:false
})
}
render(){
return (
<div className="myprogress" style={this.state.show? {display:'block'}:{display:'none'}}>
<div className="bar">
<div className="peg"></div>
</div>
<div className="spinner">
<div className="spinner-icon"></div>
</div>
</div>
)
} }
// 创建元素追加到body
let div = document.createElement('div');
let props = {
};
document.body.appendChild(div); let Box = ReactDOM.render(React.createElement(
Progress,
props
),div);
export default Box;

progress/progress.less

@themecolor:#ffc900;
.myprogress {
pointer-events: none;
.bar {background: @themecolor;position: fixed;z-index: 1031;top: 0;
left: 0;width: 100%;height: 2px;}
.peg {display: block;position: absolute;right: 0px;width: 100px;height: 100%;box-shadow: 0 0 10px @themecolor, 0 0 5px @themecolor;
opacity: 1.0;-webkit-transform: rotate(3deg) translate(0px, -4px);
-ms-transform: rotate(3deg) translate(0px, -4px);transform: rotate(3deg) translate(0px, -4px);}
.spinner {display: block;position: fixed;z-index: 1031;top: 15px;right: 15px;}
.spinner-icon {width: 18px;height: 18px;box-sizing: border-box;
border: solid 2px transparent;border-top-color: @themecolor;border-left-color: @themecolor;border-radius: 50%;
-webkit-animation: myprogress-spinner 400ms linear infinite;
animation: myprogress-spinner 400ms linear infinite;}
.myprogress-custom-parent {overflow: hidden;position: relative;}
} .myprogress-custom-parent .myprogress .spinner,
.myprogress-custom-parent .myprogress .bar {
position: absolute;
} @-webkit-keyframes myprogress-spinner {
0% { -webkit-transform: rotate(0deg); }
100% { -webkit-transform: rotate(360deg); }
}
@keyframes myprogress-spinner {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}

使用--(在请求拦截器里加,请求开始之前加,请求结束隐藏)

import axios from 'axios'
import MProgress from '@/components/progress'
// 设置超时时间
axios.defaults.timeout = 10000 axios.interceptors.request.use(config=>{ // 请求之前加loading
MProgress.start();
return config
},error=>{
return Promise.reject(error)
}) axios.interceptors.response.use(config=>{ // 响应成功关闭loading
MProgress.done();
return config
},error=>{
return Promise.reject(error)
}) export default axios;

以上,封装遮罩层、弹出层同理

react封装简单的浏览器顶部加载进度条全局组件的更多相关文章

  1. 【原生JS插件】LoadingBar页面顶部加载进度条

    先展示一下已经实现的效果: 预览地址:http://dtdxrk.github.io/js-plug/LoadingBar/index.html 看到手机上的浏览器内置了页面的加载进度条,想用在pc上 ...

  2. 仿UC浏览器图片加载进度条

    前几天用UC浏览器看新闻(无意中给UC打了广告),看到它的图片加载进度条,正好最近有时间,所以就自己写了一个. 效果图如下 进度条的底色和填充颜色都可以调整. 首先中间的笑脸作为一个整体,其实现代码如 ...

  3. 网站顶部显示预加载进度条preload.js

    网站加载的速度快的话,不会显示进度条加载时候的样式. 支持性主流浏览器都支持,ie浏览器需要9以上9也支持. 使用方法 <script src="http://code.jquery. ...

  4. 混合开发(一)——WebView开发高级技巧之加载网页以及JavaScript,加载进度条

    混合开发(一)--WebView开发高级技巧之加载网页以及JavaScript,加载进度条 现在关于混合开发也越来越多了,很多人喜欢跟随,比如HB,比如RN,其实这东西很早就有这么一个概念了,而且说实 ...

  5. vue使用nprogress页面加载进度条

    vue使用nprogress页面加载进度条 NProgress是页面跳转是出现在浏览器顶部的进度条 官网:http://ricostacruz.com/nprogress/ github:https: ...

  6. pace.js – 加载进度条插件

    这儿只是简单介绍一下这个插件pace.js. 在页面中引入Pace.js,页面就会自动监测你的请求(包括Ajax请求),在事件循环滞后,会在页面记录加载的状态以及进度情况.此插件的兼容性很好,可以兼容 ...

  7. 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画

    之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...

  8. 用document.readyState实现网页加载进度条

    概述 之前以为给网页设置加载进度条很麻烦,今天一学真是超级简单,记录下来供以后开发时参考,相信对其他人也有用. readyState 主要运用了document.readyState和nprogres ...

  9. pace.js – 网页自动加载进度条插件

    网站顶部的页面加载进度条是怎么实现的,页面的加载进度百分比,有时候获取是比较麻烦的,当然也可以利用一些优秀的JavaScript插件来实现,今天就为大家介绍这样子的一款插件:pace.js. [官方网 ...

随机推荐

  1. ios开发之--仿购物类详情页面数量添加小功能

    话不多说先上图:

  2. java.lang.IllegalArgumentException: No converter found for return value of type

    原文地址: http://blog.csdn.net/linhaiguo/article/details/51554766 问题原因: 请求返回的数据无法转换,需要添加如下配置 解决方法: 1.在po ...

  3. Apache Kafka 1.0.0正式发布!

    千呼万唤始出来,经过7年的发展与完善,Apache Kafka 1.0.0正式发布!在笔者看来,比起1.0.0引入的新功能,此版本最大的意义在于标识Kafka各种组件功能的稳定性.不过我们还是来看下1 ...

  4. Java API方式调用Kafka各种协议

    众所周知,Kafka自己实现了一套二进制协议(binary protocol)用于各种功能的实现,比如发送消息,获取消息,提交位移以及创建topic等.具体协议规范参见:Kafka协议  这套协议的具 ...

  5. Mac上zip,rar,tar文件命令解压和压缩

    经常遇到在windowns上的压缩文件,在mac上解压出现问题,特意总结了下在Terminal里常用命令的方式解压和压缩文件 1.zip压缩文件 zip命令的参数很多,可以利用"zip -- ...

  6. git怎么使用

    1_创建一个git服务器 2_开发人员小A从服务器拉取代码 3_小A提交代码 4_小c拉取代码 5_小a现在的代码 6_小c改变了小a的代码 7_小c将变更提交一下 8_小a拉取服务器的代码 9_小A ...

  7. 【Spring Boot&&Spring Cloud系列】使用Intellij构建Spring Boot和Mybatis项目

    一.创建项目 1.File->New->Project->spring initializer 2.勾选Web SQL Template Engines 3.项目生成之后,点击add ...

  8. Money型字段小数点后保留两位小数

    asp.net直接显示Money型字段小数点后面将保留四位小数,而我们常见的格价显示一般是小数点后两位,如何实现这种效果呢,有如下几种方法: 1.直接型,通过ToString()函数直接格式话 例如把 ...

  9. jQuery Sizzle选择器(三)

    在Sizzle的入口方法Sizzle()中看到的一个根据浏览器来初始化document各个方法的函数setDocument(),接下来主要看一下这个方法都做了什么. 但之前有必要看一下它用到的一些Si ...

  10. set数组去重

    new Set const arr = [{name:"wo"},{name:"shi"},{name:"wo"}] console.log ...