Компонент Steps в Ant Design предназначен для визуального отображения последовательности шагов процесса, таких как оформление заказа, регистрация пользователя или прохождение многоступенчатой формы. Он позволяет показывать текущий шаг, завершённые и предстоящие шаги с помощью интуитивно понятной визуальной схемы.
Компонент состоит из двух ключевых элементов:
Простейший пример использования:
import { Steps } from 'antd';
const { Step } = Steps;
<Steps current={1}>
<Step title="Регистрация" description="Создание аккаунта" />
<Step title="Проверка Email" description="Подтверждение почты" />
<Step title="Завершение" description="Настройка профиля" />
</Steps>
Каждый шаг может иметь несколько состояний, влияющих на его визуальное отображение:
Пример задания статусов:
<Steps current={1}>
<Step title="Регистрация" status="finish" />
<Step title="Проверка Email" status="process" />
<Step title="Завершение" status="wait" />
<Step title="Оплата" status="error" />
</Steps>
Компонент Steps поддерживает два направления отображения: горизонтальное (по умолчанию) и вертикальное.
Пример вертикального отображения:
<Steps direction="vertical" current={0}>
<Step title="Регистрация" description="Создание аккаунта" />
<Step title="Проверка Email" description="Подтверждение почты" />
<Step title="Завершение" description="Настройка профиля" />
</Steps>
Каждый шаг может быть украшен иконкой. Ant Design предоставляет встроенные иконки или позволяет использовать кастомные компоненты.
import { UserOutlined, SolutionOutlined, SmileOutlined } from '@ant-design/icons';
<Steps current={1}>
<Step title="Регистрация" icon={<UserOutlined />} />
<Step title="Проверка Email" icon={<SolutionOutlined />} />
<Step title="Завершение" icon={<SmileOutlined />} />
</Steps>
currentСостояние current позволяет динамически управлять активным шагом. Это удобно для многоступенчатых форм или динамических процессов.
Пример динамического управления:
const [current, setCurrent] = useState(0);
const next = () => setCurrent(current + 1);
const prev = () => setCurrent(current - 1);
<Steps current={current}>
<Step title="Регистрация" />
<Step title="Проверка Email" />
<Step title="Завершение" />
</Steps>
<Button onCl ick={prev}>Назад</Button>
<Button onCl ick={next}>Вперед</Button>
Шаги могут содержать кастомный контент, например форму, изображения или пояснения. Ошибочные шаги удобно выделять с помощью status=“error” и добавлять пояснение через description.
<Steps current={1}>
<Step title="Регистрация" description="Создан аккаунт" status="finish" />
<Step title="Проверка Email" description="Ошибка: письмо не получено" status="error" />
<Step title="Завершение" description="Настройка профиля" status="wait" />
</Steps>
Компонент поддерживает изменение размера через size:
<Steps size="small" current={0}>
<Step title="Регистрация" />
<Step title="Проверка Email" />
<Step title="Завершение" />
</Steps>
Steps можно интегрировать с формами и другими компонентами Ant Design для создания многоступенчатых интерфейсов.
Пример интеграции с Form:
import { Form, Input, Button } from 'antd';
const [current, setCurrent] = useState(0);
const steps = [
{
title: 'Регистрация',
content: <Form><Form.Item name="username" label="Имя пользователя"><Input /></Form.Item></Form>
},
{
title: 'Проверка Email',
content: <Form><Form.Item name="email" label="Email"><Input /></Form.Item></Form>
},
{
title: 'Завершение',
content: <div>Все готово!</div>
}
];
<Steps current={current}>
{steps.map(item => <Step key={item.title} title={item.title} />)}
</Steps>
<div>{steps[current].content}</div>
<Button disabled={current === 0} onCl ick={() => setCurrent(current - 1)}>Назад</Button>
<Button disabled={current === steps.length - 1} onCl ick={() => setCurrent(current + 1)}>Вперед</Button>
Компонент Steps обеспечивает наглядное представление многоступенчатых процессов, поддерживает разнообразные состояния и ориентации, легко интегрируется с другими компонентами Ant Design и полностью настраивается под требования интерфейса.