步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Steps.Root defaultStep={1} count={steps.length}>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
用法
import { Steps } from "@chakra-ui/react"
<Steps.Root>
<Steps.List>
<Steps.Item>
<Steps.Trigger>
<Steps.Indicator />
<Steps.Title />
<Steps.Description />
</Steps.Trigger>
<Steps.Separator />
</Steps.Item>
</Steps.List>
<Steps.Content />
<Steps.CompletedContent />
<Steps.PrevTrigger />
<Steps.NextTrigger />
</Steps.Root>
示例
尺寸
使用 size
属性来改变步骤条组件的尺寸。
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, For, Stack, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Stack gap="16">
<For each={["sm", "md", "lg"]}>
{(size) => (
<Steps.Root key={size} size={size} count={steps.length}>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>
All steps are complete!
</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)}
</For>
</Stack>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
变体
使用 variant
属性来改变步骤条组件的外观。
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, For, Stack, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Stack gap="16">
<For each={["subtle", "solid"]}>
{(variant) => (
<Steps.Root key={variant} variant={variant} count={steps.length}>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>
All steps are complete!
</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)}
</For>
</Stack>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
颜色
使用 colorPalette
属性来改变组件的配色方案。
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, For, Stack, Steps } from "@chakra-ui/react"
import { colorPalettes } from "compositions/lib/color-palettes"
const Demo = () => {
return (
<Stack gap="10" width="full">
<For each={colorPalettes}>
{(colorPalette) => (
<Steps.Root
key={colorPalette}
defaultStep={1}
count={steps.length}
colorPalette={colorPalette}
>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>
All steps are complete!
</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)}
</For>
</Stack>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
触发器
使用 Steps.Trigger
组件使步骤可点击。
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Steps.Root defaultStep={1} count={steps.length}>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Trigger>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
</Steps.Trigger>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
垂直方向
使用 orientation
属性来改变步骤条组件的方向。
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
import { Button, ButtonGroup, Stack, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Steps.Root
orientation="vertical"
height="400px"
defaultStep={1}
count={steps.length}
>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
<Stack>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Stack>
</Steps.Root>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
受控
使用 step
和 onStepChange
属性来控制步骤条组件的当前步骤。
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
"use client"
import { Button, ButtonGroup, Steps } from "@chakra-ui/react"
import { useState } from "react"
const Demo = () => {
const [step, setStep] = useState(1)
return (
<Steps.Root
step={step}
onStepChange={(e) => setStep(e.step)}
count={steps.length}
>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)
}
const steps = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
状态管理
另一种控制步骤的方法是使用 RootProvider
组件和 useSteps
状态管理钩子。
通过这种方式,您可以从步骤条外部访问步骤状态和方法。
当前步骤1
步骤 1
步骤 2
步骤 3
步骤 1 描述
步骤 2 描述
步骤 3 描述
所有步骤已完成!
"use client"
import {
Button,
ButtonGroup,
Code,
Stack,
Steps,
useSteps,
} from "@chakra-ui/react"
const Demo = () => {
const steps = useSteps({
defaultStep: 1,
count: items.length,
})
return (
<Stack align="flex-start">
<Code>current step: {steps.value}</Code>
<Steps.RootProvider value={steps}>
<Steps.List>
{items.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Steps.Title>{step.title}</Steps.Title>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{items.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.RootProvider>
</Stack>
)
}
const items = [
{
title: "Step 1",
description: "Step 1 description",
},
{
title: "Step 2",
description: "Step 2 description",
},
{
title: "Step 3",
description: "Step 3 description",
},
]
图标
将 icon
属性传递给 StepsItem
组件以显示图标。
联系方式
支付
预约
所有步骤已完成!
import { Button, ButtonGroup, Steps } from "@chakra-ui/react"
import { LuCalendar, LuCheck, LuUser, LuWallet } from "react-icons/lu"
const Demo = () => {
return (
<Steps.Root defaultStep={1} count={steps.length} size="sm">
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index}>
<Steps.Indicator>
<Steps.Status incomplete={step.icon} complete={<LuCheck />} />
</Steps.Indicator>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.description}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)
}
const steps = [
{
icon: <LuUser />,
description: "Contact Details",
},
{
icon: <LuWallet />,
description: "Payment",
},
{
icon: <LuCalendar />,
description: "Book an Appointment",
},
]
描述
将 description
属性传递给 StepsItem
组件以显示描述。
步骤 1
此步骤
步骤 2
那个步骤
步骤 3
最后一步
步骤 1 内容
步骤 2 内容
步骤 3 内容
所有步骤已完成!
import { Box, Button, ButtonGroup, Steps } from "@chakra-ui/react"
const Demo = () => {
return (
<Steps.Root defaultStep={1} count={steps.length}>
<Steps.List>
{steps.map((step, index) => (
<Steps.Item key={index} index={index} title={step.title}>
<Steps.Indicator />
<Box>
<Steps.Title>{step.title}</Steps.Title>
<Steps.Description>{step.description}</Steps.Description>
</Box>
<Steps.Separator />
</Steps.Item>
))}
</Steps.List>
{steps.map((step, index) => (
<Steps.Content key={index} index={index}>
{step.content}
</Steps.Content>
))}
<Steps.CompletedContent>All steps are complete!</Steps.CompletedContent>
<ButtonGroup size="sm" variant="outline">
<Steps.PrevTrigger asChild>
<Button>Prev</Button>
</Steps.PrevTrigger>
<Steps.NextTrigger asChild>
<Button>Next</Button>
</Steps.NextTrigger>
</ButtonGroup>
</Steps.Root>
)
}
const steps = [
{
title: "Step 1",
content: "Step 1 content",
description: "This step",
},
{
title: "Step 2",
content: "Step 2 content",
description: "That step",
},
{
title: "Step 3",
content: "Step 3 content",
description: "Final step",
},
]
属性
根组件
属性 | 默认值 | 类型 |
---|---|---|
方向 | '水平' | '垂直' | '水平' 组件的方向 |
调色板 | '灰色' | '灰色' | '红色' | '橙色' | '黄色' | '绿色' | '水鸭色' | '蓝色' | '青色' | '紫色' | '粉色' 组件的调色板 |
变体 | '实心' | '实心' | '微妙' 组件的变体 |
尺寸 | '中等' | '特小' | '小' | '中等' | '大' 组件的尺寸 |
作为子元素 | ||
总步数 | 数字 步骤的总数 | |
默认步骤 | 数字 步骤的初始值 | |
ID | 元素ID 步骤条元素的自定义ID | |
线性 | 布尔值 如果为 `true`,步骤条要求用户按顺序完成步骤 | |
步骤变更回调 | (详情: StepChangeDetails) => void 当值发生变化时调用的回调函数 | |
步骤完成时 | 无返回值函数 当步骤完成时调用的回调函数 | |
步骤值 | 数字 步骤条的当前值 | |
作为 | React元素类型 要渲染的底层元素。 | |
无样式 | 布尔值 是否移除组件的样式。 |