Компонент Descriptions предназначен для аккуратного отображения пар «ключ–значение». Он широко используется для представления деталей объектов, информации о пользователях, товарах или настройках системы. Descriptions позволяет легко управлять количеством колонок, расположением заголовков и стилем отображения данных.
title – задаёт заголовок всей панели
описаний. Может быть строкой или React-элементом.bordered – булевое значение, добавляет
границы между ячейками.column – количество колонок в одной
строке. Может быть числом (фиксированное количество колонок) или
объектом для адаптивного отображения на разных размерах экрана:<Descriptions
title="Профиль пользователя"
bordered
column={{ xs: 1, sm: 2, md: 3 }}
>
layout – способ расположения
текста:
"horizontal" – ключи и значения располагаются в строку
(по умолчанию)."vertical" – ключи располагаются над значениями.size – размер компонента
('default' | 'middle' | 'small').
extra – React-элемент для
размещения дополнительных действий (например, кнопки редактирования) в
правой части заголовка.
Каждая пара «ключ–значение» задаётся с помощью
Descriptions.Item, где ключи задаются
через свойство label:
<Descriptions title="Пользователь" bordered>
<Descriptions.Item label="Имя">Иван Иванов</Descriptions.Item>
<Descriptions.Item label="Возраст">28</Descriptions.Item>
<Descriptions.Item label="Профессия">Разработчик</Descriptions.Item>
</Descriptions>
span – определяет, сколько колонок
занимает элемент. По умолчанию 1.labelStyle и
contentStyle – позволяют задавать
индивидуальные стили для ключа и значения соответственно.<Descriptions.Item label="Email" span={2} contentStyle={{ color: 'blue' }}>
ivan@example.com
</Descriptions.Item>
Компонент поддерживает адаптивность через объект
column, который позволяет менять
количество колонок в зависимости от размера экрана:
<Descriptions
title="Информация о заказе"
bordered
column={{ xs: 1, sm: 2, md: 3, lg: 4 }}
>
<Descriptions.Item label="ID заказа">12345</Descriptions.Item>
<Descriptions.Item label="Статус">В обработке</Descriptions.Item>
<Descriptions.Item label="Дата">14.03.2026</Descriptions.Item>
</Descriptions>
Это позволяет поддерживать корректное отображение на мобильных устройствах без ручной настройки CSS.
В вертикальном режиме ключи располагаются над значениями, что удобно для узких колонок или длинных данных:
<Descriptions title="Профиль пользователя" layout="vertical" bordered>
<Descriptions.Item label="Имя">Анна Смирнова</Descriptions.Item>
<Descriptions.Item label="Должность">Менеджер</Descriptions.Item>
<Descriptions.Item label="Компания">ООО "Пример"</Descriptions.Item>
</Descriptions>
Свойство extra позволяет добавлять
кнопки или ссылки рядом с заголовком:
<Descriptions
title="Профиль пользователя"
extra={<Button type="primary">Редактировать</Button>}
bordered
>
<Descriptions.Item label="Имя">Мария Петрова</Descriptions.Item>
<Descriptions.Item label="Email">maria@example.com</Descriptions.Item>
</Descriptions>
style на самом
компоненте Descriptions можно задать общие отступы, ширину или фон.labelStyle и contentStyle для каждого
Descriptions.Item.bordered включает стандартные границы; для кастомных границ
можно использовать CSS с селекторами
.ant-descriptions-bordered.Для отображения данных, получаемых из API, часто используют map-функцию:
const userDetails = [
{ label: 'Имя', value: 'Иван Иванов' },
{ label: 'Возраст', value: 28 },
{ label: 'Профессия', value: 'Разработчик' }
];
<Descriptions title="Данные пользователя" bordered>
{userDetails.map((item, index) => (
<Descriptions.Item key={index} label={item.label}>
{item.value}
</Descriptions.Item>
))}
</Descriptions>
Такой подход упрощает поддержку и обновление информации без изменения структуры JSX.
span для объединения нескольких колонок
под один элемент.Button, Tag или Avatar, для
улучшения визуального представления.Компонент Descriptions является мощным инструментом для структурированного отображения данных в интерфейсе. Он сочетает гибкость, адаптивность и простоту стилизации, позволяя создавать аккуратные и информативные панели без лишнего кода.