用途
本技能面向 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 组件集成、嵌套对象、动态字段列表或文件上传验证的场景。
限制
资料未提供具体版本兼容范围、性能基准或生产环境注意事项,暂未提供。