Skip to content
Lenso UI

CircularProgress

CircularProgress 从 HeroUI v2 到 v3(现在称为 ProgressCircle)的迁移指南。

完整的 API 参考、样式指南与高级示例请参阅 v3 ProgressCircle 文档。本指南只关注从 HeroUI v2 的迁移。

正在寻找 Progress(线性)的迁移说明?请参阅 Progress 迁移指南。

组件重命名

CircularProgress 在 v3 中已重命名为 ProgressCircle。

结构变化

在 v2 中,CircularProgress 是单个组件,通过 prop 进行配置:

import { CircularProgress } from "@lenso/ui";
export default function App() {  return (    <CircularProgress label="Loading..." value={60} />  );}

在 v3 中,ProgressCircle 改为复合组件模式:

import { ProgressCircle } from "@lenso/ui";
export default function App() {  return (    <ProgressCircle aria-label="Loading" value={60}>      <ProgressCircle.Track>        <ProgressCircle.TrackCircle />        <ProgressCircle.FillCircle />      </ProgressCircle.Track>    </ProgressCircle>  );}

主要变化

1. 组件结构

v2: 单一 CircularProgress 组件,SVG 在内部渲染
v3: 复合组件:ProgressCircle、ProgressCircle.Track(SVG 元素)、ProgressCircle.TrackCircle(背景圆环)、ProgressCircle.FillCircle(进度弧)

2. 颜色

v2: default、primary、secondary、success、warning、danger
v3: default、accent、success、warning、danger

3. Prop 变更

v2 propv3 对应项说明
valuevalue相同
minValueminValue相同
maxValuemaxValue相同
isIndeterminateisIndeterminate默认值变化:v2 为 true,v3 为 false
formatOptionsformatOptions相同
sizesize相同(sm、md、lg)
colorcolorprimary → accent,secondary 已移除
label-改用 Label 组件
valueLabel-改用 render prop 模式
showValueLabel-将值的内容直接放入 ProgressCircle 中
strokeWidth-直接设置在 ProgressCircle.TrackCircle 与 ProgressCircle.FillCircle 上
isDisabled-已移除
disableAnimation-已移除
classNames-改在各复合子组件上使用 className

迁移示例

基本环形进度

import { CircularProgress } from "@lenso/ui";
<CircularProgress aria-label="Loading..." value={60} />

不确定状态

<CircularProgress aria-label="Loading..." />{/* isIndeterminate defaults to true in v2 */}

带标签

<CircularProgress  label="Loading..."  value={70}  showValueLabel  size="lg"/>

自定义 SVG prop

<CircularProgress  value={60}  strokeWidth={6}  aria-label="Loading"/>

样式变更

v2:classNames prop

<CircularProgress  classNames={{    base: "custom-base",    svg: "custom-svg",    track: "custom-track",    indicator: "custom-fill",    label: "custom-label",    value: "custom-value",  }}/>

v3:直接使用 className prop

<ProgressCircle className="custom-base" value={60}>  <ProgressCircle.Track className="custom-svg">    <ProgressCircle.TrackCircle className="custom-track" />    <ProgressCircle.FillCircle className="custom-fill" />  </ProgressCircle.Track></ProgressCircle>

组件结构

ProgressCircle (Root)  └── ProgressCircle.Track (SVG element)      ├── ProgressCircle.TrackCircle (background circle)      └── ProgressCircle.FillCircle (progress arc)

总结

  1. 重命名:CircularProgress → ProgressCircle
  2. 组件结构:单组件 → 复合组件(ProgressCircle.Track、ProgressCircle.TrackCircle、ProgressCircle.FillCircle)
  3. 不确定状态默认值变化:isIndeterminate 在 v3 中默认为 false(v2 中为 true)
  4. 标签:label prop → Label 组件
  5. SVG prop:原本在根上的 strokeWidth → 直接设置在 TrackCircle 与 FillCircle 上
  6. 颜色变化:primary → accent,secondary 已移除
  7. 移除的 prop:isDisabled、disableAnimation → 请改用 Tailwind CSS
  8. 移除 classNames:改在各复合子组件上使用 className