Form 表单
表单控件
表单容器,配合 FormField 实现数据收集、校验、提交。
何时使用
需要收集、校验、提交用户输入的结构化数据。
代码示例
基础用法
tsx
import { Form, FormItem, FormField } from "@/components/ui/form"
export function Basic() {
return (
<Form>
<FormItem>Content</FormItem>
</Form>
)
}样式变体
layout
| layout | 说明 | 默认 |
|---|---|---|
vertical | ✓ | |
horizontal | ||
inline |
API / Props
Form
| Prop | Type | Default | 说明 |
|---|---|---|---|
className | string | — | 自定义样式类名 |
onSubmit | () => void | — | Called on submit with form data |
errors | Record<string, string> | — | Validation errors map (field name -> error message) |
| ...rest | React.ComponentProps<"form"> | — | 透传 <form> 原生属性 |
注意事项
- Client Component: 使用
"use client",依赖 React hooks/状态,需在客户端渲染。 - CVA 变体: 通过
class-variance-authority管理样式变体,类型安全。变体对象可导出复用。 - 复合组件: 包含 2 个子组件(FormItem, FormField),使用组合模式按需导入。
- 原生属性: 继承所有
<form>原生 HTML 属性。
📘 完整交互式示例与控件属性请查看 Storybook 文档。