react实现数据进度条展示组件

1.需求

在项目开发时,要展示一个操作的进度条,比如:要实现一个文件的上传下载进度条,或者实现类似拼夕夕砍一刀进度条,怎么实现呢?效果图如下:

对上面效果图说明:

进度条底色为棕黑色(#043330,或者自定义一个进度条图片),进度条为黄色(#f1e60a,或者自定义一个进度条图片),比如:

进度条里面的文案颜色为白色(#fff)

2.实现

把上面需要实现的功能写成一个组件,页面直接调用该组件即可,代码如下:
要引入组件页面的代码:

javascript 复制代码
import React, {useState} from "react";
import axios from "axios";
import Scroll from "../../components/Scroll";
 
const Index = () => {
     //进度条要达到的总值
     const [proTotal,setProTotal] = React.useState(500);
     //进度条当前的值
     const [proCur,setProCur] = React.useState(500);
    useEffect(() => {
        //通过api接口从服务端获取配置参数
        let result = await axios({
                method: "post",
                url: "服务端apiurl地址",
                data: JSON.stringify({
                      "服务端请求api接口",
                      {"请求参数名": "请求参数值"},
                }),
                headers: {
                  "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
                },
          });
        
        //设置配置
        setProTotal(result.proTotal);
        setProCur(result.proCur);
    });
 return (
        <div class={style.main}>
                 <Progress
                     width="100%"
                     height={"0.73rem"}
                     borderRadius={"1.2rem"}
                     percentage={(preCur / proTotal) * 100}
                     textColor={"#fff"}
                     fontSize={"0.6rem"}
                     progressColor={"#f1e60a"}
                     backgroundColor={"#043330"}
                     text={`${reCur} / ${proTotal}`}
                 />
        </div>
    )
}
 
export default Index;

对上面Progress参数说明:

width: 进度条宽度,

height:进度条高度,

borderRadius:进度条边框圆弧半径,

percentage:进度条百分比(主要用于显示黄色进度条多少),

textColor:进度条中间说明文案颜色,

text:进度条中间的文案说明

fontSize:进度条中间说明文案字体大小,

progressColor:进度条颜色:

可以是颜色二进制,还可以是一张图片,比如:

progressColor={"#f1e60a"}

progressColor={""url('../images/progrssCplor.png') 100%"} (图片如上面所示)

backgroudColor:进度条背景色:同progressColor一样
组件:

javascript 复制代码
import React from "react";

const Progress = ({
      percentage,
      width,
      height,
      borderRadius,
      backgroundColor,
      fontSize,
      textColor,
      text
  }) => {
    return (
        <div style={{ width, height, borderRadius, backgroundColor, overflow: "hidden" }}>
            <div
                style={{
                    width: "100%",
                    height: "100%",
                    textAlign: "center",
                    display: "flex",
                    justifyContent: "center",
                    alignItems: "center",
                }}
            >
                <span
                    style={{
                        fontSize,
                        fontWeight:700,
                        color: textColor,
                    }}
                >
                  {text}
                </span>
            </div>
            <div style={{ background: progressColor,backgroundSize: `${100}% ${percentage}%`, marginTop: `-${height}`, height, width: `${percentage}%`, borderRadius: borderRadius }} />
        </div>
    );
};

export default Progress;

对上面代码说明:
Progress中的参数为请求组件时传入的参数,

第一个div是进度条底图div,

第二个div是进度条中间文案div,

第三个div是进度条进度div

好了,进度条代码组件就好了,当然,也可以参考react-vant的Progress 进度条 组件进行开发

相关推荐
谭光志4 小时前
Vibe Coding 时代,程序员该何去何从
前端·后端·ai编程
仿生狮子6 小时前
别再说“全栈”了,AI 时代团队只认这 5 种人
前端·人工智能·后端
kyriewen6 小时前
AI 写的 React 组件,合并前必查的 6 个坏味道——每个都有代码对比
前端·javascript·react.js
Highcharts.js6 小时前
软件开发公司为什么选择 Highcharts?
前端·前端框架·echarts·数据可视化·技术选型·highcharts·图表工具
多加点辣也没关系7 小时前
JavaScript|第13章:原始类型的方法
开发语言·javascript·ecmascript
এ慕ོ冬℘゜7 小时前
深入理解 JavaScript 事件体系:Window、鼠标与键盘事件详解
开发语言·javascript·okhttp
阿祖zu7 小时前
企业 AI 转型之痛,个人提效十倍不止,组织效率仍止步不前?
前端·aigc·agent
摇滚侠8 小时前
SpringBoot3+Vue3 全套视频教程 45-51
前端·javascript·vue.js
酸梅果茶9 小时前
【6】lightning_lm项目-LIO 前端 -点云预处理模块
前端·slam
触底反弹9 小时前
🔥 RAG 到底是怎么工作的?掰开揉碎了给你讲明白!
javascript·人工智能·后端