当前位置:首页 > 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实现可定制样式的进度条:

react实现进度条

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

实现示例:

react实现进度条

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 moment如何使用

react moment如何使用

安装 react-moment 通过 npm 或 yarn 安装 react-moment 包。确保项目中已安装 moment.js,因为 react-moment 依赖它。 npm install…

react如何验证

react如何验证

表单验证方法 在React中验证表单数据通常使用以下几种方式: 内置HTML5验证 利用HTML5原生表单验证属性如required、pattern等,结合form.noValidate属性禁用浏览…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

typescript react 如何

typescript react 如何

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

react如何通信

react如何通信

React 组件通信方式 React 组件间的通信方式多样,具体选择取决于组件关系和场景需求。以下是常见方法: 父子组件通信 父组件通过 props 向子组件传递数据,子组件通过回调函数通知父组件…

如何设计react组件

如何设计react组件

设计 React 组件的核心原则 React 组件的设计需要遵循高内聚、低耦合的原则,确保组件功能独立且易于维护。组件的设计可以分为展示组件和容器组件两类,展示组件负责 UI 渲染,容器组件负责逻辑处…