最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于React和antd實(shí)現(xiàn)自定義進(jìn)度條的示例代碼

 更新時(shí)間:2025年03月26日 09:21:23   作者:五號(hào)廠房  
在現(xiàn)代 Web 開發(fā)中,進(jìn)度條是一種常見(jiàn)且實(shí)用的 UI 組件,用于直觀地向用戶展示任務(wù)的完成進(jìn)度,本文將詳細(xì)介紹如何使用 React 來(lái)構(gòu)建一個(gè)自定義的進(jìn)度條,它不僅能夠動(dòng)態(tài)展示進(jìn)度,還具備額外的信息提示功能,需要的朋友可以參考下

一、技術(shù)選型與準(zhǔn)備

我們選用了廣受歡迎的 React 框架作為核心開發(fā)工具,它提供了高效的組件化開發(fā)模式,讓代碼的組織與維護(hù)變得更加便捷。同時(shí),為了實(shí)現(xiàn)一些精致的交互效果,引入了 Ant Design(簡(jiǎn)稱 antd)庫(kù)中的 Tooltip 組件。Ant Design 是一套成熟的企業(yè)級(jí) UI 設(shè)計(jì)語(yǔ)言和 React 組件庫(kù),能夠助力我們快速搭建出美觀且功能強(qiáng)大的界面。

二、組件的核心邏輯

(一)狀態(tài)管理

首先,定義一個(gè)名為 BasedOnReactSelfDefinedProgressBar 的函數(shù)式 React 組件:

import React, { useState, useEffect } from "react";
import { Tooltip } from "antd";

const BasedOnReactSelfDefinedProgressBar: React.FC = () => {
  const [progressData, setProgressData] = useState([
    { percent: 10, color: "red" },
    { percent: 10, color: "green" },
    { percent: 10, color: "red" },
    { percent: 10, color: "green" },
    { percent: 10, color: "green" },
  ]);

在這里,通過(guò) useState 鉤子函數(shù)初始化了一個(gè)名為 progressData 的狀態(tài)變量,它存儲(chǔ)著進(jìn)度條的關(guān)鍵信息。這個(gè)狀態(tài)是一個(gè)數(shù)組,數(shù)組中的每個(gè)元素都是一個(gè)對(duì)象,包含 percent(表示當(dāng)前片段的進(jìn)度占比)和 color(用于區(qū)分不同類型,在后續(xù)示例中與巖石類型相關(guān)聯(lián),紅色代表火成巖,綠色代表沉積巖)兩個(gè)屬性。初始狀態(tài)下,設(shè)定了各個(gè)片段具有相同的起始占比 10%。

(二)動(dòng)態(tài)更新機(jī)制

為了讓進(jìn)度條能夠自動(dòng)推進(jìn),使用 useEffect 鉤子函數(shù)來(lái)處理副作用:

  useEffect(() => {
    const interval = setInterval(() => {
      setProgressData(prev => 
        prev.map(item => ({
         ...item,
          percent: Math.min(prev.reduce((sum, cur) => sum + cur.percent, 0) + 10, 100)
        }))
      );
    }, 1000);
    return () => clearInterval(interval);
  }, []);

當(dāng)組件掛載時(shí),創(chuàng)建一個(gè)定時(shí)器(setInterval),每隔 1 秒鐘觸發(fā)一次更新操作。在更新函數(shù)中,通過(guò)獲取前一狀態(tài) prev,對(duì) progressData 數(shù)組中的每個(gè)元素進(jìn)行處理。新的 percent 值是將當(dāng)前所有元素的 percent 之和加上 10,但使用 Math.min 確保最終結(jié)果不超過(guò) 100%,以符合進(jìn)度條的實(shí)際意義。同時(shí),為了避免內(nèi)存泄漏,在組件卸載時(shí),通過(guò)返回的清除函數(shù) clearInterval(interval) 及時(shí)關(guān)閉定時(shí)器。

三、組件的渲染呈現(xiàn)

  return (
    <div
      style={{
        width: "100%",
        height: "10px",
        background: "#e0e0e0",
        position: "relative",
        borderRadius: "10px",
        overflow: "hidden"
      }}
    >
      {progressData.map((item, index) => (
        <Tooltip 
          key={index} 
          title={`巖石類型: ${item.color === 'red'? '火成巖' : '沉積巖'}\n占比: ${item.percent}%`}
        >
          <div
            style={{
              width: `${100 / progressData.length}%`,
              height: "100%",
              background: item.color,
              position: "absolute",
              left: `${(100 / progressData.length) * index}%`,
              borderRadius: '5px',
              transition: 'width 0.3s ease'
            }}
          />
        </Tooltip>
      ))}
    </div>
  );
};

export default BasedOnReactSelfDefinedProgressBar;

顯示效果:

綜上所述,通過(guò)以上步驟,利用 React 結(jié)合 antd 的 Tooltip 組件,成功構(gòu)建了一個(gè)既具備動(dòng)態(tài)進(jìn)度更新功能,又擁有豐富信息提示的自定義進(jìn)度條。在實(shí)際項(xiàng)目中,可根據(jù)具體需求進(jìn)一步拓展其功能,比如添加更多的進(jìn)度條樣式、響應(yīng)不同的交互事件等,使其更好地服務(wù)于各類業(yè)務(wù)場(chǎng)景。

以上就是基于React和antd實(shí)現(xiàn)自定義進(jìn)度條的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于React antd自定義進(jìn)度條的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React Antd Upload組件上傳多個(gè)文件實(shí)現(xiàn)方式

    React Antd Upload組件上傳多個(gè)文件實(shí)現(xiàn)方式

    為實(shí)現(xiàn)多文件上傳,需使用beforeUpload和customRequest替代onChange以避免多次調(diào)用問(wèn)題,并處理文件路徑以兼容Electron不同平臺(tái)
    2025-08-08
  • React中redux的使用詳解

    React中redux的使用詳解

    Redux 是一個(gè)狀態(tài)管理庫(kù),它可以幫助你管理應(yīng)用程序中的所有狀態(tài),Redux的核心概念之一是Store,它表示整個(gè)應(yīng)用程序的狀態(tài),這篇文章給大家介紹React中redux的使用,感興趣的朋友一起看看吧
    2023-12-12
  • 在React中編寫class樣式的方法總結(jié)

    在React中編寫class樣式的方法總結(jié)

    在TypeScript (TSX) 中編寫 CSS 樣式類有幾種方法,包括使用純 CSS、CSS Modules、Styled Components 等,本文給大家介紹了幾種常見(jiàn)方法的示例,通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 如何使用React構(gòu)建一個(gè)擲骰子的小游戲

    如何使用React構(gòu)建一個(gè)擲骰子的小游戲

    這篇文章主要介紹了如何使用React構(gòu)建一個(gè)擲骰子的小游戲,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • 在React中引入CSS的各種方式詳解

    在React中引入CSS的各種方式詳解

    React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),廣泛應(yīng)用于現(xiàn)代Web開發(fā)中,在React應(yīng)用中,引入CSS樣式是實(shí)現(xiàn)美觀界面的重要環(huán)節(jié),本文將詳細(xì)探討在React中引入CSS的各種方式,并分析各自的優(yōu)缺點(diǎn),需要的朋友可以參考下
    2025-06-06
  • React前端開發(fā)createElement源碼解讀

    React前端開發(fā)createElement源碼解讀

    這篇文章主要為大家介紹了React前端開發(fā)createElement源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • React Native 中集成 MinIO 對(duì)象存儲(chǔ)的最佳實(shí)踐(圖片/文件上傳服務(wù))

    React Native 中集成 MinIO 對(duì)象存儲(chǔ)的最佳實(shí)踐(圖片/文件上傳

    本文介紹了從環(huán)境配置到實(shí)際應(yīng)用的完整流程,包括核心功能實(shí)現(xiàn)、最佳實(shí)踐和常見(jiàn)問(wèn)題解決方案,希望這些內(nèi)容能幫助你在 React Native 項(xiàng)目中更好地使用 MinIO,感興趣的朋友跟隨小編一起看看吧
    2026-04-04
  • 解讀react的onClick自動(dòng)觸發(fā)等相關(guān)問(wèn)題

    解讀react的onClick自動(dòng)觸發(fā)等相關(guān)問(wèn)題

    這篇文章主要介紹了解讀react的onClick自動(dòng)觸發(fā)等相關(guān)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解React?Native中如何使用自定義的引用路徑

    詳解React?Native中如何使用自定義的引用路徑

    這篇文章主要為大家介紹了React?Native中如何使用自定義的引用路徑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • React中的useMemo 和 useEffect 執(zhí)行順序

    React中的useMemo 和 useEffect 執(zhí)行順序

    在 React 組件的渲染過(guò)程中,useMemo 和 useEffect 的執(zhí)行順序是不同的,本文給大家介紹React中的useMemo 和 useEffect 哪個(gè)先執(zhí)行,感興趣的朋友一起看看吧
    2025-01-01

最新評(píng)論

科尔| 镇江市| 宝丰县| 大兴区| 广河县| 凤冈县| 新密市| 务川| 长丰县| 武隆县| 大埔区| 三门峡市| 虎林市| 响水县| 新化县| 营山县| 洪雅县| 防城港市| 博湖县| 芒康县| 庄浪县| 宁明县| 揭西县| 新沂市| 怀宁县| 沈阳市| 南投县| 迁西县| 惠州市| 四川省| 大名县| 禹州市| 迭部县| 玉环县| 封开县| 收藏| 汝州市| 罗定市| 朝阳区| 四平市| 万安县|