表单验证方案对比:Formik vs react-hook-form vs Zod
Formik、react-hook-form 和 Zod(valibot) 在表单验证中的定位和区别是什么?各自的优缺点如何?如何组合使用 react-hook-form + Zod 实现类型安全的表单验证?
回答
苦行僧
Formik: 成熟稳定、Yup 集成、FieldArray。缺点: 每次输入整个表单 re-render、bundle ~30KB。react-hook-form(RHF): 非受控 ref 设计,只 re-render 变化字段,bundle ~10KB。Zod: 类型安全 schema,TS 类型自动推理,bundle ~14KB。组合: RHF 的 useForm({resolver: zodResolver(schema)}),schema: z.object({email: z.string().email()})。推荐: RHF+Zod 兼顾性能与类型安全;Formik+Yup 适合旧项目。valibot 是 Zod 的模块化替代。