用途:该技能面向使用 Formik 处理表单的场景,包括搭建表单、实现校验和处理表单提交,帮助开发者按既定模式组织代码。
主要能力:资料给出 useFormik 的基础表单写法,配合 Yup 的 validationSchema 定义邮箱、密码、确认密码、手机号、URL、数值范围、数组最少项等常用校验规则;演示基于字段值的条件校验,例如仅在 hasCompany 为真时要求填写公司名称;提供 getFieldProps 字段属性辅助方法和 Select/Picker 的取值处理;展示 GraphQL 变更的提交写法,包含加载状态、成功与失败提示;给出编辑表单使用 enableReinitialize 在初始值变化时重建表单,并用 dirty 跟踪是否有改动的示例;还包含多步表单按步骤切换校验 schema、最后一步用完整 schema 再次校验的做法。此外列出表单状态字段(values、errors、touched、isValid、isSubmitting、dirty 及各类处理函数)的说明,以及不展示校验错误、提交按钮始终可用、变更无错误处理等反模式及其正确写法。
使用方式:在 React 项目中引入 useFormik 和 yup,定义 initialValues、validationSchema 与 onSubmit,将字段值、变更、失焦和错误按 touched 状态绑定到输入组件;提交时用 try/finally 控制 setSubmitting,并按需通过 enableReinitialize、dirty 等控制编辑表单行为。资料中的 VStack、Input、Button 以及 GraphQL 钩子属于项目自定义依赖,不是 Formik 自带导出;Web 表单需要自行适配 DOM 事件与提交。
适用场景:适合需要统一表单校验与提交模式的 React 或 React Native 风格项目,尤其是登录、创建、编辑、多步下单等表单流程。
限制:客户端校验只用于改善用户体验,服务端必须再次校验、认证与授权,并对变更错误做脱敏处理,不得记录密码。enableReinitialize 会在初始值变化时重置未保存的编辑内容,刷新已编辑记录前需要提示用户或有意合并数据。多步表单仅校验当前步骤并不充分,最终需用完整 schema 校验。示例不能替代针对具体环境的测试、安全审查,以及对破坏性或高成本操作的用户批准。其他集成细节与版本兼容信息暂未提供。