98.0k

条目 Item

PreviousNext

一个通用组件,可用于展示任何内容。

Item 组件是一个简单的 flex 容器,可以容纳几乎任何类型的内容。用它来显示标题、描述和操作。将它与 ItemGroup 组件组合使用,可以创建条目列表。

你几乎也可以用 div 元素和一些类实现同样的效果,但我已经做过很多次了,所以决定为它创建一个组件。现在我一直在用它。

安装

pnpm dlx shadcn@latest add item

使用方法

import {
  Item,
  ItemActions,
  ItemContent,
  ItemDescription,
  ItemFooter,
  ItemHeader,
  ItemMedia,
  ItemTitle,
} from "@/components/ui/item"
<Item>
  <ItemHeader>条目头部</ItemHeader>
  <ItemMedia />
  <ItemContent>
    <ItemTitle>条目标题</ItemTitle>
    <ItemDescription>条目描述</ItemDescription>
  </ItemContent>
  <ItemActions />
  <ItemFooter>条目底部</ItemFooter>
</Item>

Item 与 Field 的区别

如果你需要展示表单输入组件,如复选框、输入框、单选按钮或选择框,请使用 Field

如果你仅需展示内容,如标题、描述和操作,请使用 Item

示例

变体

尺寸

Item 组件有不同尺寸以适应不同场景。例如,可以用 sm 尺寸来显示紧凑型条目,或用默认尺寸显示标准条目。

图标

头像

图片

分组

头部

链接

要将条目渲染为链接,使用 asChild 属性。悬停和聚焦状态会应用到 <a> 元素上。

<Item asChild>
  <a href="/dashboard">
    <ItemMedia />
    <ItemContent>
      <ItemTitle>仪表盘</ItemTitle>
      <ItemDescription>账户与活动概览。</ItemDescription>
    </ItemContent>
    <ItemActions />
  </a>
</Item>

下拉菜单

API 参考

Item

用于展示带有媒体、标题、描述和操作内容的主要组件。

属性类型默认值
variant"default" | "outline" | "muted""default"
size"default" | "sm""default"
asChildbooleanfalse
<Item size="" variant="">
  <ItemMedia />
  <ItemContent>
    <ItemTitle>条目</ItemTitle>
    <ItemDescription>条目描述</ItemDescription>
  </ItemContent>
  <ItemActions />
</Item>

你可以使用 asChild 属性,将自定义组件渲染为条目,例如链接。悬停和聚焦状态会应用到自定义组件上。

import {
  Item,
  ItemContent,
  ItemDescription,
  ItemMedia,
  ItemTitle,
} from "@/components/ui/item"
 
export function ItemLink() {
  return (
    <Item asChild>
      <a href="/dashboard">
        <ItemMedia variant="icon">
          <Home />
        </ItemMedia>
        <ItemContent>
          <ItemTitle>仪表盘</ItemTitle>
          <ItemDescription>
            账户与活动概览。
          </ItemDescription>
        </ItemContent>
      </a>
    </Item>
  )
}

ItemGroup

ItemGroup 组件是一个容器,用于将相关条目组合在一起,并保持样式一致。

属性类型默认值
classNamestring
<ItemGroup>
  <Item />
  <Item />
</ItemGroup>

ItemSeparator

ItemSeparator 组件是条目组中用来分隔条目的分隔线。

属性类型默认值
classNamestring
<ItemGroup>
  <Item />
  <ItemSeparator />
  <Item />
</ItemGroup>

ItemMedia

使用 ItemMedia 组件来展示媒体内容,如图标、图片或头像。

属性类型默认值
variant"default" | "icon" | "image""default"
classNamestring
<ItemMedia variant="icon">
  <Icon />
</ItemMedia>
<ItemMedia variant="image">
  <img src="..." alt="..." />
</ItemMedia>

ItemContent

ItemContent 组件包裹条目的标题和描述。

如果你只需要一个标题,可以省略 ItemContent

属性类型默认值
classNamestring
<ItemContent>
  <ItemTitle>条目标题</ItemTitle>
  <ItemDescription>条目描述</ItemDescription>
</ItemContent>

ItemTitle

使用 ItemTitle 组件显示条目的标题。

属性类型默认值
classNamestring
<ItemTitle>条目标题</ItemTitle>

ItemDescription

使用 ItemDescription 组件显示条目的描述。

属性类型默认值
classNamestring
<ItemDescription>条目描述</ItemDescription>

ItemActions

使用 ItemActions 组件来显示操作按钮或其他交互元素。

属性类型默认值
classNamestring
<ItemActions>
  <Button>操作</Button>
  <Button>操作</Button>
</ItemActions>

ItemHeader

使用 ItemHeader 组件来展示条目的头部。

属性类型默认值
classNamestring
<ItemHeader>条目头部</ItemHeader>

ItemFooter

使用 ItemFooter 组件来展示条目的底部。

属性类型默认值
classNamestring
<ItemFooter>条目底部</ItemFooter>