Skyroc UI
数据展示

List

用于展示标题、描述、前后插槽和补充内容的列表组件

List 用于展示一组结构一致的内容项。每一项可以包含前置内容、标题、描述、主体内容、后置内容和分隔线,适合通知、设置入口、消息列表等场景。

import {
  List,
  ListContent,
  ListDescription,
  ListItem,
  ListItemUI,
  ListRoot,
  ListTitle
} from '@skyroc/web-ui';

何时使用

  • 需要展示多条结构类似的信息项。
  • 列表项需要图标、标题、描述、右侧操作或状态。
  • 需要通过数据数组批量渲染列表项。
  • 大量数据或虚拟滚动场景优先使用 VirtualList。

基础用法

通过 items 传入列表项数据。List 会自动渲染每个 item,并在非最后一项后追加默认 Divider。

Preview
Code
Loading...

列表项结构

每个 item 支持 leadingtitledescriptioncontenttrailingdivider。其中 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 调整列表间距、列表项间距、正文字号和标题字号,从 xs2xl 共 6 个尺寸。

尺寸列表间距标题字号适用场景
xs8px12px紧凑列表、表格内嵌
sm12px14px次级信息列表
md16px16px常规场景(默认)
lg20px18px设置页、详情入口
xl24px20px大号内容列表
2xl28px24px重点展示列表

自定义样式

通过 classNames 控制不同 slot:rootitemcontenttitledescription。也可以通过 contentPropstitlePropsdescriptionProps 分别向内部结构组件传入额外属性。

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.rootClassValue-
classNames各 slot 的自定义 class(root / item / content / title / description)ListUi-
contentProps传递给 ListContent 的额外 propsListContentProps-
titleProps传递给 ListTitle 的额外 propsListTitleProps-
descriptionProps传递给 ListDescription 的额外 propsListDescriptionProps-

结构组件

当需要手动组合列表结构时,可以直接使用导出的结构组件。

属性说明类型默认值
ListRoot列表根容器,渲染 ulListRootProps-
ListItem列表项容器,渲染 liListItemProps-
ListItemUI复合列表项,组合 leading / content / trailing / dividerListItemUIProps-
ListContent列表项内容容器ListContentProps-
ListTitle列表项标题ListTitleProps-
ListDescription列表项描述文本ListDescriptionProps-

类型

ListProps

主组件属性。继承 ListRootProps,并通过 items 渲染多个复合列表项。

字段类型说明
classNameClassValue根列表 class。
classNamesListUi各 slot 的自定义 class。
contentPropsListContentProps传递给每个 ListContent 的属性。
descriptionPropsListDescriptionProps传递给每个 ListDescription 的属性。
items*ListItemUIProps[]列表项数据。
leadingReactNode统一前置插槽。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。
titlePropsListTitleProps传递给每个 ListTitle 的属性。
trailingReactNode统一后置插槽。

ListItemUIProps

复合列表项属性。

字段类型说明
classNameClassValue列表项 class。
classNamesListUi各 slot 的自定义 class。
contentReactNode显示在标题和描述之后的主体内容。
contentPropsListContentProps内容容器属性。
descriptionReactNode描述内容。
descriptionPropsListDescriptionProps描述组件属性。
dividerReactNode | boolean分隔线配置。React element 会作为自定义分隔线渲染。
leadingReactNode前置插槽。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。
titleReactNode标题内容。
titlePropsListTitleProps标题组件属性。
trailingReactNode后置插槽。

ListUi

各 slot 的自定义 class。

字段类型说明
rootClassValue根列表 class。
itemClassValue列表项 class。
contentClassValue内容容器 class。
titleClassValue标题 class。
descriptionClassValue描述文本 class。

ListRootProps

根列表属性。继承 ul 元素属性,并支持 size。

字段类型说明
childrenReactNode列表项内容。
classNameClassValue根列表 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。

ListItemProps

列表项容器属性。继承 li 元素属性,并支持 size。

字段类型说明
childrenReactNode列表项内容。
classNameClassValue列表项 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。

ListContentProps

列表项内容容器属性。继承 div 元素属性,并支持 size。

字段类型说明
childrenReactNode内容节点。
classNameClassValue内容容器 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。

ListTitleProps

列表标题属性。继承 h3 元素属性,并支持 size。

字段类型说明
childrenReactNode标题内容。
classNameClassValue标题 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。

ListDescriptionProps

列表描述属性。继承 p 元素属性,并支持 size。

字段类型说明
childrenReactNode描述内容。
classNameClassValue描述 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'组件尺寸。

ListSlots

List 可配置 classNames 的内置 slot

'content' | 'description' | 'item' | 'root' | 'title'

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page