Button.tsx
基本信息
- 类型: React 组件 (shadcn/ui)
- 路径:
./src/components/ui/button.tsx
功能描述
按钮组件,项目中最基础的交互组件。支持多种变体、尺寸和插槽模式。
导出内容
Button- 主按钮组件buttonVariants- 按钮样式变体配置
Props 接口
Button
| 属性 | 类型 | 必填 | 默认值 | 说明 | |||||
|---|---|---|---|---|---|---|---|---|---|
| variant | `'default' \ | 'destructive' \ | 'outline' \ | 'secondary' \ | 'ghost' \ | 'link'` | 否 | 'default' | 按钮变体样式 |
| size | `'default' \ | 'sm' \ | 'lg' \ | 'icon' \ | 'icon-sm' \ | 'icon-lg'` | 否 | 'default' | 按钮尺寸 |
| asChild | boolean | 否 | false | 是否作为子元素渲染 | |||||
| className | string | 否 | - | 自定义CSS类名 | |||||
| ...props | React.ComponentProps<'button'> | 否 | - | button原生属性 |
变体说明
default- 主色填充按钮destructive- 危险红色按钮outline- 边框按钮secondary- 次要背景色按钮ghost- 幽灵按钮(悬停时显示背景)link- 链接样式按钮
尺寸说明
default- 默认高度 36pxsm- 小尺寸 32pxlg- 大尺寸 40pxicon- 图标按钮 36x36pxicon-sm- 小图标按钮 32x32pxicon-lg- 大图标按钮 40x40px
依赖
@radix-ui/react-slot- 插槽组件class-variance-authority- 变体样式管理@/lib/utils- 工具函数 (cn)
使用示例
import { Button } from "@/components/ui/button";
import { Loader2 } from "lucide-react";
// 默认按钮
<Button>点击我</Button>
// 带变体
<Button variant="destructive">删除</Button>
<Button variant="outline">取消</Button>
<Button variant="ghost">返回</Button>
<Button variant="link">查看详情</Button>
// 带尺寸
<Button size="sm">小按钮</Button>
<Button size="lg">大按钮</Button>
// 图标按钮
<Button size="icon">
<Plus className="size-4" />
</Button>
// 加载状态
<Button disabled>
<Loader2 className="size-4 animate-spin" />
加载中...
</Button>
// 作为链接
<Button asChild>
<a href="/dashboard">进入仪表盘</a>
</Button>