SuperAPI AI 工具集

form-validation

编程与开发

查看项目

更新于 10-16 07:48

技能介绍

用途

本技能面向 Shopify Remix 应用的表单验证开发,采用 Zod(模式校验库)与 Conform(专为 Remix 设计的表单库)组合方案。其目标是为表单提供类型安全、服务端优先且具备渐进增强能力的校验流程,并能与 Shopify Polaris 表单组件结合使用。

为什么选择 Zod + Conform

  • 类型安全:Zod 模式可自动生成 TypeScript 类型。
  • 服务端优先:校验在服务端运行,客户端校验可选。
  • 渐进增强:即使没有 JavaScript 也能工作。
  • Remix 原生:Conform 专为 Remix 的表单处理构建。
  • 兼容 Polaris:易于与 Shopify Polaris 表单组件集成。

安装

npm install zod @conform-to/react @conform-to/zod

主要能力

1. 模式定义

技能给出基础模式示例(如商品 schema),涵盖必填/长度/正数/小数位/整数/枚举/数组等常见校验,并通过 z.infer 推导 TypeScript 类型。还展示了带 refine 的模式(如折扣 schema),实现跨字段逻辑,例如百分比折扣不超过 100%、结束日期晚于开始日期。

2. Remix Action 集成

展示在 Remix 的 action 中通过 parseWithZod 解析 formData,校验失败返回错误回复,成功则使用类型化的 submission.value。同时给出 useForm 客户端配置示例(onValidate、shouldValidate、shouldRevalidate)以及通过 superRefine 实现异步校验(如判断折扣码是否已存在)。

3. Polaris 表单组件集成

提供可复用的 ValidatedTextField、ValidatedSelect 组件示例,说明如何把 Conform 的字段元数据接入 Polaris 的 TextField、Select,并将字段错误显示在组件上。另附完整的 Polaris 表单页面示例,包含 Page、Card、FormLayout、Banner 等组件与提交状态处理。

4. 复杂表单模式

  • 嵌套对象:如地址 schema 嵌入配送 schema,通过 getFieldset 访问嵌套字段。
  • 动态数组:如商品变体列表,使用 useFieldList、insert、remove 管理字段增删。
  • 文件上传校验:限制文件大小与图片类型,支持单文件与多文件数组校验。

5. 常见 Shopify Schema

提供客户 schema(姓名、邮箱、电话、营销订阅、标签转换、备注)和订单备注 schema(订单 GID 前缀校验、备注长度、是否通知客户)等示例。

适用场景

适用于在 Shopify Remix 应用中构建商品、折扣、客户、订单备注等各类表单校验,尤其是需要类型安全、服务端校验、异步校验、Polaris 组件集成、嵌套对象、动态字段列表或文件上传验证的场景。

限制

资料未提供具体版本兼容范围、性能基准或生产环境注意事项,暂未提供。