数据展示
List
用于展示标题、描述、前后插槽和补充内容的列表组件
List 用于展示一组结构一致的内容项。每一项可以包含前置内容、标题、描述、主体内容、后置内容和分隔线,适合通知、设置入口、消息列表等场景。
import {
List,
ListContent,
ListDescription,
ListItem,
ListItemUI,
ListRoot,
ListTitle
} from '@skyroc/web-ui';何时使用
- 需要展示多条结构类似的信息项。
- 列表项需要图标、标题、描述、右侧操作或状态。
- 需要通过数据数组批量渲染列表项。
- 大量数据或虚拟滚动场景优先使用 VirtualList。
基础用法
通过 items 传入列表项数据。List 会自动渲染每个 item,并在非最后一项后追加默认 Divider。
Preview
Code
Loading...
列表项结构
每个 item 支持 leading、title、description、content、trailing 和 divider。其中 divider 传 React element 时会使用自定义分隔线;传 false 或空值时不渲染分隔线。
<List
items={[
{
leading: <Icon icon="lucide:bell" />,
title: 'Notifications',
description: 'You have 3 unread messages.',
content: <span>Extra content</span>,
trailing: <Icon icon="lucide:chevron-right" />
}
]}
/>尺寸
通过 size 调整列表间距、列表项间距、正文字号和标题字号,从 xs 到 2xl 共 6 个尺寸。
| 尺寸 | 列表间距 | 标题字号 | 适用场景 |
|---|---|---|---|
xs | 8px | 12px | 紧凑列表、表格内嵌 |
sm | 12px | 14px | 次级信息列表 |
md | 16px | 16px | 常规场景(默认) |
lg | 20px | 18px | 设置页、详情入口 |
xl | 24px | 20px | 大号内容列表 |
2xl | 28px | 24px | 重点展示列表 |
自定义样式
通过 classNames 控制不同 slot:root、item、content、title 和 description。也可以通过 contentProps、titleProps、descriptionProps 分别向内部结构组件传入额外属性。
API
List
通用属性参考:基于 ul 元素,使用 items 数据渲染复合列表项。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| items* | 列表项数据 | ListItemUIProps[] | - |
| size | 尺寸,影响间距、字号和标题样式 | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'md' |
| leading | 统一设置每一项的前置插槽;会被 item.leading 覆盖 | ReactNode | - |
| trailing | 统一设置每一项的后置插槽;会被 item.trailing 覆盖 | ReactNode | - |
| className | 根列表 class;优先级高于 classNames.root | ClassValue | - |
| classNames | 各 slot 的自定义 class(root / item / content / title / description) | ListUi | - |
| contentProps | 传递给 ListContent 的额外 props | ListContentProps | - |
| titleProps | 传递给 ListTitle 的额外 props | ListTitleProps | - |
| descriptionProps | 传递给 ListDescription 的额外 props | ListDescriptionProps | - |
结构组件
当需要手动组合列表结构时,可以直接使用导出的结构组件。
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| ListRoot | 列表根容器,渲染 ul | ListRootProps | - |
| ListItem | 列表项容器,渲染 li | ListItemProps | - |
| ListItemUI | 复合列表项,组合 leading / content / trailing / divider | ListItemUIProps | - |
| ListContent | 列表项内容容器 | ListContentProps | - |
| ListTitle | 列表项标题 | ListTitleProps | - |
| ListDescription | 列表项描述文本 | ListDescriptionProps | - |
类型
ListProps
主组件属性。继承 ListRootProps,并通过 items 渲染多个复合列表项。
| 字段 | 类型 | 说明 |
|---|---|---|
| className | ClassValue | 根列表 class。 |
| classNames | ListUi | 各 slot 的自定义 class。 |
| contentProps | ListContentProps | 传递给每个 ListContent 的属性。 |
| descriptionProps | ListDescriptionProps | 传递给每个 ListDescription 的属性。 |
| items* | ListItemUIProps[] | 列表项数据。 |
| leading | ReactNode | 统一前置插槽。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
| titleProps | ListTitleProps | 传递给每个 ListTitle 的属性。 |
| trailing | ReactNode | 统一后置插槽。 |
ListItemUIProps
复合列表项属性。
| 字段 | 类型 | 说明 |
|---|---|---|
| className | ClassValue | 列表项 class。 |
| classNames | ListUi | 各 slot 的自定义 class。 |
| content | ReactNode | 显示在标题和描述之后的主体内容。 |
| contentProps | ListContentProps | 内容容器属性。 |
| description | ReactNode | 描述内容。 |
| descriptionProps | ListDescriptionProps | 描述组件属性。 |
| divider | ReactNode | boolean | 分隔线配置。React element 会作为自定义分隔线渲染。 |
| leading | ReactNode | 前置插槽。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
| title | ReactNode | 标题内容。 |
| titleProps | ListTitleProps | 标题组件属性。 |
| trailing | ReactNode | 后置插槽。 |
ListUi
各 slot 的自定义 class。
| 字段 | 类型 | 说明 |
|---|---|---|
| root | ClassValue | 根列表 class。 |
| item | ClassValue | 列表项 class。 |
| content | ClassValue | 内容容器 class。 |
| title | ClassValue | 标题 class。 |
| description | ClassValue | 描述文本 class。 |
ListRootProps
根列表属性。继承 ul 元素属性,并支持 size。
| 字段 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 列表项内容。 |
| className | ClassValue | 根列表 class。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
ListItemProps
列表项容器属性。继承 li 元素属性,并支持 size。
| 字段 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 列表项内容。 |
| className | ClassValue | 列表项 class。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
ListContentProps
列表项内容容器属性。继承 div 元素属性,并支持 size。
| 字段 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 内容节点。 |
| className | ClassValue | 内容容器 class。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
ListTitleProps
列表标题属性。继承 h3 元素属性,并支持 size。
| 字段 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 标题内容。 |
| className | ClassValue | 标题 class。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
ListDescriptionProps
列表描述属性。继承 p 元素属性,并支持 size。
| 字段 | 类型 | 说明 |
|---|---|---|
| children | ReactNode | 描述内容。 |
| className | ClassValue | 描述 class。 |
| size | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 组件尺寸。 |
ListSlots
List 可配置 classNames 的内置 slot
'content' | 'description' | 'item' | 'root' | 'title'