图片上传步骤条

页面展示

{uploadStatus === 'uploading' ? (
  <div className="img-box mt">
    <img className="imgs" src={uplaodingImg} />
    <div
      className="uploading-mask"
      style={{
        top: `${imgProcess}%`,
      }}
    />
  </div>
) : null}

获取进度条长度方法

const [imgProcess, setImgProcess] = useState(0); // 上传进度
const [uploadStatus, setUploadStatus] = useState(''); // 上传状态
const [uplaodingImg, setUplaodingImg] = useState(''); // 上传中的图片
let timer: unknown; // 定时器
let status = ''; // 上传状态(解决异步用的)

// 上传进度条
function runner() {
  const step = 10;
  let interval = 800;
  let process = 0;
  return () => {
    timer = setInterval(() => {
      // 进度条到达90%,仍未上传完成,暂停进度条
      if (process >= 90 && status === 'uploading') {
        return;
      }
      // 上传完成加快进度条速度
      if (status === 'finsih') {
        interval = 10;
      }
      // 进度条加载完毕
      if (process >= 100) {
        clearInterval(timer);
        return;
      }
      process += step;
      setImgProcess(process);
    }, interval);
  };
}

调用

setUploadStatus('uploading');
status= 'uploading';
runner()();
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值