当前位置:首页 > React

react实现进度条

2026-01-27 20:10:19React

使用原生HTML5实现进度条

在React中可以直接使用HTML5的<progress>元素实现基础进度条:

function ProgressBar({ value, max }) {
  return <progress value={value} max={max} />;
}
// 使用示例
<ProgressBar value={30} max={100} />

使用CSS自定义样式进度条

通过div元素和CSS实现可定制样式的进度条:

function StyledProgressBar({ percentage }) {
  return (
    <div style={{ width: '100%', backgroundColor: '#e0e0e0', borderRadius: 5 }}>
      <div 
        style={{ 
          width: `${percentage}%`, 
          height: 20, 
          backgroundColor: '#4CAF50',
          borderRadius: 5,
          transition: 'width 0.3s ease'
        }}
      />
    </div>
  );
}

使用第三方库react-progressbar

安装react-progressbar库:

npm install react-progressbar

实现示例:

import ProgressBar from 'react-progressbar';

function App() {
  return <ProgressBar completed={75} />;
}

动画效果进度条实现

结合React状态和CSS动画实现动态进度条:

function AnimatedProgressBar() {
  const [progress, setProgress] = useState(0);

  useEffect(() => {
    const timer = setInterval(() => {
      setProgress(prev => (prev >= 100 ? 0 : prev + 10));
    }, 500);
    return () => clearInterval(timer);
  }, []);

  return (
    <div style={{ width: '100%', backgroundColor: '#f0f0f0' }}>
      <div style={{
        width: `${progress}%`,
        height: 20,
        backgroundColor: '#2196F3',
        transition: 'width 0.5s ease-out'
      }} />
    </div>
  );
}

圆形进度条实现

使用SVG创建圆形进度条:

function CircularProgress({ radius, strokeWidth, progress }) {
  const circumference = 2 * Math.PI * radius;
  const strokeDashoffset = circumference - (progress / 100) * circumference;

  return (
    <svg width={radius * 2} height={radius * 2}>
      <circle
        cx={radius}
        cy={radius}
        r={radius - strokeWidth / 2}
        fill="none"
        stroke="#e0e0e0"
        strokeWidth={strokeWidth}
      />
      <circle
        cx={radius}
        cy={radius}
        r={radius - strokeWidth / 2}
        fill="none"
        stroke="#4CAF50"
        strokeWidth={strokeWidth}
        strokeDasharray={circumference}
        strokeDashoffset={strokeDashoffset}
        transform={`rotate(-90 ${radius} ${radius})`}
      />
    </svg>
  );
}

react实现进度条

标签: 进度条react
分享给朋友:

相关文章

如何react页面

如何react页面

创建 React 页面 使用 create-react-app 快速初始化项目: npx create-react-app my-app cd my-app npm start 编写组件代码 在 s…

react如何销毁

react如何销毁

销毁 React 组件 在 React 中,销毁组件通常涉及清理副作用(如事件监听器、定时器或订阅)以防止内存泄漏。以下是实现组件销毁的常见方法: 使用 useEffect 清理副作用 在函数组件…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用axios拦截器和第三方库如NProgress。以下是具体实现方法: 使用axios拦截器配合NProgress 安装…

vue实现水波球进度条

vue实现水波球进度条

实现水波球进度条的方法 使用 SVG 和 CSS 动画 创建一个圆形 SVG 元素,通过 CSS 动画实现水波效果。定义一个波浪路径,使用 animateTransform 或 CSS keyfram…

react native 如何

react native 如何

React Native 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impo…