ProComponents, templates & AI tooling
HeroUI
27.7k

Spinner

Spinner 从 HeroUI v2 到 v3 的迁移指南。

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

结构变化

在 v2 中,Spinner 支持多种变体与标签:

import { Spinner } from "@heroui/react";

export default function App() {
  return <Spinner variant="default" label="Loading..." color="primary" />;
}

在 v3 中,Spinner 已简化为单一圆形变体:

import { Spinner } from "@heroui/react";

export default function App() {
  return <Spinner color="accent" />;
}

主要变化

1. 组件行为

v2: 支持多种变体(defaultsimplegradientwavedotsspinner)以及标签
v3: 仅保留单一圆形旋转变体,不再支持标签

2. Prop 变更

v2 propv3 位置说明
label如有需要,请使用单独的元素手动添加标签
variant仅提供一种 spinner 变体
labelColor不再支持标签
classNames直接使用 className prop
sizesize取值变化:"sm" | "md" | "lg""sm" | "md" | "lg" | "xl"
colorcolor取值有变化(详见下文)

3. 颜色值变化

  • "default""current"(继承当前文本颜色)
  • "primary""accent"
  • "secondary" → 已移除(请改用 "current""accent"
  • "success""warning""danger" → 仍可使用

迁移示例

带标签

{/* Simple label */}
<Spinner label="Loading..." />

{/* With label color and custom styling */}
<Spinner
  label="Loading..."
  labelColor="primary"
  classNames={{
    label: "text-foreground mt-4"
  }}
/>
{/* Simple label */}
<div className="flex flex-col items-center gap-2">
  <Spinner />
  <span>Loading...</span>
</div>

{/* With custom styling */}
<div className="flex flex-col items-center gap-2">
  <Spinner />
  <span className="text-foreground mt-4">Loading...</span>
</div>

尺寸与颜色

{/* Sizes */}
<div className="flex gap-4">
  <Spinner size="sm" />
  <Spinner size="md" />
  <Spinner size="lg" />
</div>

{/* Colors */}
<div className="flex gap-4">
  <Spinner color="default" />
  <Spinner color="primary" />
  <Spinner color="secondary" />
  <Spinner color="success" />
  <Spinner color="warning" />
  <Spinner color="danger" />
</div>
{/* Sizes */}
<div className="flex gap-4">
  <Spinner size="sm" />
  <Spinner size="md" />
  <Spinner size="lg" />
  <Spinner size="xl" />
</div>

{/* Colors */}
<div className="flex gap-4">
  <Spinner color="current" />
  <Spinner color="accent" />
  <Spinner color="success" />
  <Spinner color="warning" />
  <Spinner color="danger" />
</div>

变体(已移除)

<div className="flex gap-4">
  <Spinner variant="default" />
  <Spinner variant="simple" />
  <Spinner variant="gradient" />
  <Spinner variant="wave" />
  <Spinner variant="dots" />
  <Spinner variant="spinner" />
</div>
{/* Only one variant available - circular spinner */}
<Spinner />

{/* For other spinner styles, consider using CSS animations */}

颜色映射

迁移颜色时,可参考以下映射:

v2 颜色v3 颜色说明
"default""current"继承当前文本颜色
"primary""accent"使用强调色
"secondary""current""accent"改用当前色或强调色
"success""success"不变
"warning""warning"不变
"danger""danger"不变

总结

  1. 不再支持标签:移除 label prop——如有需要请手动添加标签
  2. 不再有变体:移除 variant prop——仅保留单一圆形 spinner
  3. 不再有标签颜色:移除 labelColor prop——请自行为标签设置样式
  4. 颜色值变化"default""current""primary""accent""secondary" 已移除
  5. 新增尺寸:新增 "xl" 尺寸可选
  6. 移除 classNames:直接使用 className prop

本页目录