当前位置:首页 > 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创建圆形进度条:

react实现进度条

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 native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gree…

react架构如何

react架构如何

React 架构核心概念 React 的架构围绕组件化、虚拟 DOM 和单向数据流设计。组件是构建用户界面的独立模块,分为函数组件和类组件。虚拟 DOM 通过高效的 Diff 算法减少直接操作真实 D…

react如何遍历

react如何遍历

遍历数组或对象的方法 在React中,遍历数组或对象通常用于渲染列表或动态生成内容。以下是几种常见的遍历方法: 使用map遍历数组map是遍历数组并返回新数组的高阶函数,适合渲染列表。 con…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

typescript react 如何

typescript react 如何

TypeScript 与 React 结合使用的方法 在 React 项目中使用 TypeScript 可以提升代码的可维护性和类型安全性。以下是一些关键步骤和最佳实践: 安装 TypeScript…