Компонент Empty в библиотеке Ant Design используется для отображения состояния, когда нет данных для отображения в списках, таблицах, картах или других контейнерах. Он служит визуальным индикатором пустого состояния и помогает пользователю понять, что контент отсутствует, вместо того чтобы показывать пустое пространство.
small,
default, large.import { Empty } from 'antd';
const App = () => <Empty />;
По умолчанию компонент отображает стандартное изображение и текст “No Data”.
<Empty
description="Данные отсутствуют"
/>
<Empty
description={
<span>
Здесь пока нет информации
</span>
}
/>
description может быть строкой или
React-элементом.<Empty
image="https://example.com/custom-image.png"
description="Нет записей"
/>
image может быть URL, React-элементом или
предопределённой константой
Empty.PRESENTED_IMAGE_SIMPLE.<Empty image={Empty.PRESENTED_IMAGE_SIMPLE} description="Нет данных" />
Компонент поддерживает область для кнопок или ссылок, которые помогают пользователю взаимодействовать с пустым состоянием.
<Empty
description="Список пуст"
children={
<Button type="primary">Создать запись</Button>
}
/>
children – React-элемент, который
отображается под изображением и описанием.Компонент поддерживает три размера, которые задаются через проп
size:
small – компактный вид, подходит для встроенных пустых
состояний.default – стандартный вид.large – крупный вид для центральных страниц или
модальных окон.<Empty size="small" description="Малый размер" />
<Empty size="large" description="Большой размер" />
Часто используется вместе с компонентами Table, List, Card:
import { Table } from 'antd';
const columns = [
{ title: 'Имя', dataIndex: 'name', key: 'name' },
{ title: 'Возраст', dataIndex: 'age', key: 'age' },
];
const data = [];
<Table
columns={columns}
dataSource={data}
locale={{ emptyText: <Empty description="Нет данных в таблице" /> }}
/>
locale.emptyText можно заменить стандартный текст
отсутствия данных на компонент Empty.List:import { List } from 'antd';
<List
dataSource={[]}
renderItem={item => <List.Item>{item}</List.Item>}
locale={{ emptyText: <Empty description="Список пуст" /> }}
/>
Ant Design поддерживает динамическую смену темы, и компонент
Empty корректно меняет стиль под светлую и темную темы.
Для упрощенной версии с минималистичным изображением используется
Empty.PRESENTED_IMAGE_SIMPLE:
<Empty
image={Empty.PRESENTED_IMAGE_SIMPLE}
description="Пусто"
/>
Для расширенной настройки можно использовать класс
ant-empty:
.ant-empty {
background-color: #f0f2f5;
border-radius: 8px;
padding: 40px;
}
.ant-empty-description {
color: #8c8c8c;
font-size: 16px;
}
Также возможно передавать стили напрямую через
style:
<Empty
style={{ backgroundColor: '#fafafa', padding: '50px' }}
description="Нет данных"
/>
Компонент Empty автоматически масштабируется в зависимости от контейнера, но при необходимости можно дополнительно использовать медиазапросы для изменения размера изображения и текста:
@media (max-width: 576px) {
.ant-empty-description {
font-size: 14px;
}
.ant-empty-img {
width: 80px;
height: 80px;
}
}
Хотя Empty не имеет собственных событий, можно
динамически управлять его отображением через условный рендеринг:
const [data, setData] = useState([]);
return (
<>
{data.length === 0 ? (
<Empty description="Данные отсутствуют" />
) : (
<List dataSource={data} renderItem={item => <List.Item>{item}</List.Item>} />
)}
</>
);
Empty только когда данных
действительно нет.Spin) для отображения
состояния загрузки перед пустым состоянием.Empty — универсальный компонент, который делает интерфейс более понятным и информативным, предотвращая ощущение “пустоты” при отсутствии данных.