Progress 进度条组件 #

基本用法 #

jsx
import { Progress } from '@chakra-ui/react'

function Example() {
  return <Progress value={60} />
}

进度条颜色 #

jsx
<Progress colorScheme="green" value={60} />
<Progress colorScheme="red" value={60} />
<Progress colorScheme="blue" value={60} />
<Progress colorScheme="orange" value={60} />

进度条尺寸 #

jsx
<Progress size="xs" value={60} />
<Progress size="sm" value={60} />
<Progress size="md" value={60} />
<Progress size="lg" value={60} />

进度条变体 #

jsx
<Progress variant="outline" value={60} />
<Progress hasStripe value={60} />
<Progress hasStripe isAnimated value={60} />

不确定进度 #

jsx
<Progress size="xs" isIndeterminate />

实用示例 #

文件上传进度 #

jsx
function FileUploadProgress({ progress, fileName }) {
  return (
    <Box>
      <HStack justify="space-between" mb={2}>
        <Text fontSize="sm">{fileName}</Text>
        <Text fontSize="sm" color="gray.500">{progress}%</Text>
      </HStack>
      <Progress 
        value={progress} 
        size="sm" 
        colorScheme={progress === 100 ? 'green' : 'blue'}
        hasStripe 
        isAnimated 
      />
    </Box>
  )
}

多步骤进度 #

jsx
function StepProgress({ currentStep, totalSteps }) {
  const progress = (currentStep / totalSteps) * 100

  return (
    <Box>
      <HStack justify="space-between" mb={2}>
        <Text fontSize="sm">步骤 {currentStep} / {totalSteps}</Text>
        <Text fontSize="sm" color="gray.500">{Math.round(progress)}%</Text>
      </HStack>
      <Progress value={progress} size="sm" colorScheme="blue" />
    </Box>
  )
}

Progress 属性速查表 #

属性 说明
value 进度值 0-100
max 最大值 number
size 尺寸 xs, sm, md, lg
colorScheme 颜色方案 blue, green, red…
hasStripe 条纹 boolean
isAnimated 动画 boolean
isIndeterminate 不确定 boolean

下一步 #

现在你已经掌握了 Progress 组件,接下来学习 Spinner 加载,了解如何展示加载动画!

最后更新:2026-03-28