Компонент ListItem библиотеки
Naive UI предназначен для отображения элементов списков
с расширенной кастомизацией. Он служит строительным блоком для создания
списков с иконками, аватарами, кнопками действий и дополнительной
информацией. Использование ListItem
позволяет управлять визуальной структурой и поведением каждого элемента
списка независимо.
Для начала необходимо импортировать компонент из библиотеки:
import { NList, NListItem } from 'naive-ui';
Базовая структура списка:
<n-list>
<n-list-item>Элемент 1</n-list-item>
<n-list-item>Элемент 2</n-list-item>
<n-list-item>Элемент 3</n-list-item>
</n-list>
В этом примере каждый элемент списка представлен простым текстом.
NListItem автоматически наследует стили от
контейнера NList.
Основные свойства компонента
NListItem:
title — заголовок элемента. Позволяет отображать текст
или VNode внутри компонента.description — дополнительный текст под заголовком.disabled — логическое значение. Отключает элемент,
делая его неактивным.extra — слот для размещения дополнительных элементов,
таких как кнопки или иконки.avatar — слот или строка с URL изображения для
отображения аватара.onClick — функция, которая срабатывает при клике на
элемент.Пример использования с заголовком и описанием:
<n-list>
<n-list-item title="Заголовок 1" description="Описание элемента 1" />
<n-list-item title="Заголовок 2" description="Описание элемента 2" />
</n-list>
Слоты предоставляют гибкость в кастомизации:
Пример с использованием слотов:
<n-list>
<n-list-item>
<template #avatar>
<img src="avatar.png" alt="avatar" />
</template>
<template #default>
<strong>Пользователь 1</strong>
<p>Описание активности</p>
</template>
<template #extra>
<n-button size="small">Действие</n-button>
</template>
</n-list-item>
</n-list>
NListItem поддерживает несколько
визуальных состояний:
disabled.Пример с отключенным элементом:
<n-list>
<n-list-item title="Активный элемент" />
<n-list-item title="Отключенный элемент" disabled />
</n-list>
NListКомпонент NList предоставляет контейнер
для списка и управляет структурой и стилями
NListItem. В
NList можно задавать:
bordered — отображение границ между элементами.size — размер элементов (small,
medium, large).hoverable — включение подсветки при наведении на все
элементы.split — добавление разделителей между элементами.Пример:
<n-list bordered size="medium" hoverable>
<n-list-item title="Элемент 1" />
<n-list-item title="Элемент 2" />
<n-list-item title="Элемент 3" />
</n-list>
NListItem можно комбинировать с
иконками, аватарами и кнопками, создавая интерфейсы наподобие чатов,
уведомлений или списков задач.
Пример списка уведомлений с аватаром и кнопкой:
<n-list>
<n-list-item>
<template #avatar>
<n-avatar src="user1.png" />
</template>
<template #default>
<strong>Никита</strong>
<p>Добавил новый комментарий</p>
</template>
<template #extra>
<n-button size="tiny" secondary>Ответить</n-button>
</template>
</n-list-item>
</n-list>
NVirtualList вместе с
NListItem.:key
для оптимизации обновления DOM.extra и avatar вместо прямой вставки HTML в
title для лучшей читаемости и поддержки реактивности.Naive UI позволяет настраивать визуальное оформление через CSS-переменные:
--n-list-item-padding — внутренние отступы.--n-list-item-font-size — размер текста.--n-list-item-color — цвет текста.--n-list-item-border-color — цвет разделителей.Пример переопределения стилей:
<n-list style="--n-list-item-padding: 16px; --n-list-item-font-size: 14px;">
<n-list-item title="Элемент с кастомным стилем" />
</n-list>
Элемент NListItem можно рассматривать
как многоуровневый контейнер с тремя ключевыми зонами:
Такое разделение позволяет создавать гибкие, масштабируемые списки с единым стилем и полной поддержкой реактивности Vue.js.