# 小程序表单开发规范 (Tailwind CSS版) ## 概述 本规范定义了基于Taro框架的小程序表单开发标准,采用react-hook-form进行状态管理,zod进行表单验证,Tailwind CSS v4进行样式设计。 ## 技术栈 - **Taro 4** - 跨端小程序框架 - **React 18** - 前端框架 - **React Hook Form 7** - 表单状态管理 - **Zod 4** - 模式验证 - **@hookform/resolvers** - 验证器集成 - **Tailwind CSS v4** - 原子化CSS框架 ## 目录结构 ### 推荐结构(大型/复用表单) ``` mini/ ├── src/ │ ├── components/ │ │ └── ui/ │ │ ├── form.tsx # 表单核心组件 │ │ ├── input.tsx # 输入框组件 │ │ ├── label.tsx # 标签组件 │ │ └── button.tsx # 按钮组件 │ ├── utils/ │ │ ├── cn.ts # 类名合并工具 │ │ └── validators.ts # 验证规则(可选) │ └── schemas/ │ └── user.schema.ts # 表单验证模式(可选) ``` ### 简化结构(小型/单次使用表单) ``` mini/ ├── src/ │ ├── components/ │ │ └── ui/ │ │ ├── form.tsx # 表单核心组件 │ │ ├── input.tsx # 输入框组件 │ │ └── button.tsx # 按钮组件 └── src/pages/ └── your-page/ └── index.tsx # 验证规则直接定义在页面中 ``` ## 核心组件 ### 1. 表单组件系统 #### 1.1 Form 组件 ```typescript // mini/src/components/ui/form.tsx import { createContext, useContext, forwardRef } from 'react' import { useFormContext } from 'react-hook-form' import { cn } from '@/utils/cn' const Form = forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { return ( ) }) Form.displayName = 'Form' ``` #### 1.2 FormField 组件 ```typescript const FormField = forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ render, ...props }, ref) => { return ( ( {render({ field, fieldState, formState })} )} {...props} /> ) }) ``` #### 1.3 FormItem 组件布局 ```typescript const FormItem = forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { const id = useId() return ( ) }) ``` #### 1.4 FormLabel 组件 ```typescript const FormLabel = forwardRef< React.ElementRef, React.ComponentPropsWithoutRef >(({ className, ...props }, ref) => { const { error, formItemId } = useFormField() return (