Server Actions 的入参校验一直是个头疼事,最近全面接入了 Zod,体验明显好。
const Schema = z.object({ email: z.string().email(), name: z.string().min(2) });
type Input = z.infer<typeof Schema>;
好处是 schema 和类型同源,再也不用两边维护。配合 react-hook-form 的 resolver,表单校验也复用同一份。
不爽的点:
- 运行时校验有性能开销,热点路径要测。
- 错误信息中文化还得手动写 map。
- nested union 的类型推导有时候会爆。
大家是用 Zod 还是 valibot?后者听说体积小很多。