Компонент Empty в библиотеке Element Plus используется для отображения состояния отсутствия данных. Он применяется в интерфейсах, где пользователь ожидает увидеть содержимое — например список, таблицу, результаты поиска или карточки товаров — но данные по каким-либо причинам отсутствуют.
Основная задача компонента — визуально и семантически сообщить пользователю, что контент отсутствует, а также при необходимости предложить дальнейшие действия.
Типичные сценарии использования:
Компонент обеспечивает единообразное отображение подобных состояний в интерфейсе и поддерживает кастомизацию текста, изображения и дополнительных элементов.
Минимальный пример использования компонента:
<template>
<el-empty description="Нет данных" />
</template>
В данном случае отображается стандартная иллюстрация Element Plus и текстовое описание.
Компонент автоматически центрируется внутри контейнера и отображает:
Компонент Empty состоит из трёх основных частей:
| Часть | Назначение |
|---|---|
| Image | Иллюстрация пустого состояния |
| Description | Текстовое описание |
| Footer | Дополнительные действия |
Структура в DOM выглядит следующим образом:
<div class="el-empty">
<div class="el-empty__image"></div>
<div class="el-empty__description"></div>
<div class="el-empty__bottom"></div>
</div>
Каждая из частей может быть переопределена через слоты.
Определяет текст описания пустого состояния.
Тип: string
<el-empty description="Список пуст" />
Если свойство не задано, используется стандартный текст.
Позволяет указать собственное изображение вместо стандартной иллюстрации.
Тип: string
<el-empty
image="https://example.com/empty.svg"
description="Ничего не найдено"
/>
Обычно используются SVG-иллюстрации.
Позволяет задать размер изображения.
Тип: number
<el-empty
:image-size="200"
description="Нет элементов"
/>
Размер задаётся в пикселях.
Компонент поддерживает несколько слотов для гибкой кастомизации.
Позволяет полностью заменить изображение.
<el-empty description="Нет результатов">
<template #image>
<img src="/images/search-empty.svg" />
</template>
</el-empty>
Это полезно, когда необходимо использовать фирменную графику проекта.
Позволяет использовать HTML или сложную разметку.
<el-empty>
<template #description>
<p>Результаты не найдены</p>
</template>
</el-empty>
Возможна вставка любых компонентов.
Нижняя часть используется для кнопок или действий.
<el-empty description="Корзина пуста">
<el-button type="primary">
Перейти к покупкам
</el-button>
</el-empty>
Это один из наиболее распространённых сценариев использования.
Компонент часто используется вместе с кнопками.
<el-empty description="Список задач пуст">
<el-button type="primary">
Создать задачу
</el-button>
</el-empty>
Таким образом интерфейс не только информирует пользователя об отсутствии данных, но и предлагает дальнейшее действие.
Пустое состояние часто возникает в таблицах.
Пример:
<template>
<div v-if="data.length === 0">
<el-empty description="Нет записей" />
</div>
<el-table v-else :data="data">
</el-table>
</template>
Альтернативный вариант — отображение Empty внутри контейнера таблицы.
При отсутствии результатов поиска компонент становится частью UX-сценария.
<el-empty description="По вашему запросу ничего не найдено">
<el-button type="primary">
Очистить фильтры
</el-button>
</el-empty>
Такая структура помогает пользователю быстрее исправить запрос.
Иногда Empty используется не только для отсутствия данных, но и как стартовое состояние страницы.
Например:
<el-empty description="Проекты ещё не созданы">
<el-button type="primary">
Создать проект
</el-button>
</el-empty>
В таком случае компонент выполняет роль onboarding-элемента.
Стили компонента можно изменять через CSS.
Пример:
.el-empty {
padding: 40px 0;
}
.el-empty__description {
font-size: 16px;
}
Также можно стилизовать изображение:
.el-empty__image img {
max-width: 240px;
}
Компонент часто размещается внутри контейнеров карточек.
<el-card>
<el-empty description="Нет уведомлений" />
</el-card>
Такой подход позволяет сохранять структуру интерфейса даже при отсутствии данных.
Текст описания можно адаптировать под разные языки через систему локализации приложения.
Пример:
<el-empty :description="$t('empty.noData')" />
Это особенно важно для крупных интерфейсов с мультиязычной поддержкой.
Empty часто используется совместно с loading-состоянием.
Типичный паттерн:
<template>
<div v-if="loading">
<el-skeleton rows="4" />
</div>
<el-empty
v-else-if="items.length === 0"
description="Данные отсутствуют"
/>
<data-list v-else :items="items" />
</template>
Такая структура обеспечивает последовательность состояний интерфейса:
Грамотное использование пустых состояний значительно улучшает пользовательский опыт.
Описание должно объяснять причину отсутствия данных:
Если пользователь может изменить ситуацию, желательно добавить кнопку.
Примеры:
Иллюстрации делают интерфейс более дружелюбным и понятным.
Рекомендуется использовать:
Текст должен соответствовать контексту страницы.
Плохо:
Нет данных
Лучше:
Нет сохранённых адресов доставки
<el-empty description="Сообщений нет" />
<el-empty description="Ваша корзина пуста">
<el-button type="primary">
Перейти в каталог
</el-button>
</el-empty>
<el-empty description="Фильтр не дал результатов">
<el-button>
Сбросить фильтр
</el-button>
</el-empty>
<el-empty description="Новых уведомлений нет" />
Компонент Empty является крайне лёгким:
Он может безопасно использоваться даже в большом количестве интерфейсных состояний.
Компонент поддерживает базовые требования доступности:
Для улучшения доступности рекомендуется:
В крупных интерфейсах рекомендуется стандартизировать пустые состояния.
Распространённая архитектура:
components
├─ EmptyStates
│ ├─ EmptyProjects.vue
│ ├─ EmptyTasks.vue
│ ├─ EmptyNotifications.vue
Каждый компонент может использовать el-empty, но с уникальной иллюстрацией и текстом.
Это обеспечивает:
Компонент Empty является важным элементом пользовательского интерфейса, позволяющим корректно обрабатывать ситуации отсутствия данных, улучшать навигацию пользователя и поддерживать визуальную целостность интерфейса даже при отсутствии контента.