前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载本篇技术指南聚焦 docs/pages/components/form-formik/fragments/validation.md 所演示的 Formik 校验集成方案讲解如何在 React Suite 表单体系中用useFormik的validate函数完成字段级校验并通过Form.Group、Form.ErrorMessage组件把错误信息以气泡形式展示在输入框下方。读完本文你将掌握 Formik 与 React Suite 组合校验的完整写法、错误消息组件的控制原理以及如何把校验结果接入 React Suite 的Form提交链路。一、为什么把校验交给 FormikReact Suite 自带基于 schema-typed 中的model属性。但在 Formik 集成场景下文档采用的方式是让 Formik 全权管理表单状态与校验逻辑React Suite 只负责渲染控件和展示错误信息。这样做的直接好处校验逻辑与 UI 解耦useFormik的validate函数返回一个errors对象字段名与错误文案一一对应所有 React Suite 数据输入组件Input、DatePicker、Rate等都可以共用同一套 Formik 状态无需逐个适配后续可以无缝切换到 Yup 或 Zod 等模式校验方案见 yup-schema-validation.mderrors的数据结构保持不变。该集成文档位于 Formik 集成指南en-US/index.md的 Validation 小节属于该指南中承上启下的核心示例。二、手写 validate 的完整代码validation.md给出的是一个可直接运行的完整示例核心思路分三步定义useFormik配置 → 封装带错误展示的Field组件 → 用Form承接提交。完整代码如下import { useFormik } from formik; import { Input, Button, Form } from rsuite; const Field ({ error, ...rest }) { return ( Form.Group Input {...rest} / Form.ErrorMessage show{!!error} placementbottomStart {error} /Form.ErrorMessage /Form.Group ); }; const App () { const formik useFormik({ initialValues: { name: , email: }, validate: values { const errors {}; if (!values.name) { errors.name Required; } if (!values.email) { errors.email Required; } else if (!/^[A-Z0-9._%-][A-Z0-9.-]\.[A-Z]{2,4}$/i.test(values.email)) { errors.email Invalid email address; } return errors; }, onSubmit: values { alert(JSON.stringify(values, null, 2)); } }); return ( Form onSubmit{formik.handleSubmit} Form.Stack fluid Field namename placeholderName value{formik.values.name} error{formik.errors.name} onChange{value formik.setFieldValue(name, value)} / Field nameemail placeholderEmail value{formik.values.email} error{formik.errors.email} onChange{value formik.setFieldValue(email, value)} / Button appearanceprimary typesubmit Submit /Button /Form.Stack /Form ); }; ReactDOM.render(App /, document.getElementById(root));2.1 validate 函数的返回契约validate接收当前全部字段值values返回一个errors对象字段名即 keyerrors.name、errors.email与formik.values中的字段一一对应值为空对象表示校验通过示例中const errors {}作为兜底返回值为错误文案字符串例如Required、Invalid email address它们会被直接渲染进Form.ErrorMessage。示例中的邮箱校验使用了经典的正则/^[A-Z0-9._%-][A-Z0-9.-]\.[A-Z]{2,4}$/i注意末尾的i标志使大小写不敏感因此[A-Z]与[a-z]均可匹配。该写法验证了两个关键行为空值优先拦截email为空时只报Required不会继续执行正则产生重复错误校验短路else if保证只有非空邮箱才走格式校验。2.2 Field 组件的封装模式示例把「输入控件 错误提示」封装成一个私有组件Field通过解构把error从其余 props 中剥离Form.Group提供字段的纵向布局容器Input {...rest} /将name、placeholder、value、onChange等 props 透传给输入控件Form.ErrorMessage show{!!error} placementbottomStart{error}/Form.ErrorMessage仅在error有值时渲染气泡错误提示bottomStart表示提示出现在控件左下侧。Form.ErrorMessage在 React Suite 源码中的行为与此完全吻合查看 FormErrorMessage.tsx 可确认它通过show属性控制显隐——show为真时才渲染气泡结构否则返回nullplacement通过data-placement属性下发到 DOM配合样式实现定位。这正是!!error布尔转换之所以必要的底层原因。需要特别说明的是这里的Form.ErrorMessage是完全受控的它不读取 React Suite 内部表单上下文错误文案完全由 Formik 的formik.errors提供。这与 React Suite 原生Form的errorFromContext机制见 Form.tsx相互独立、互不干扰因此可以在不启用model校验的情况下单独工作。三、提交链路Formik 的 handleSubmit 如何与 Form 配合示例使用Form onSubmit{formik.handleSubmit}注意这里引入的是 React Suite 的Form组件而非原生form但它只承担两个职责样式与布局Form.Stack fluid让内部字段在垂直方向排列并占满容器宽度标准表单事件透传React SuiteForm底层渲染为原生form元素见 Form.tsx并把onSubmit作为原生事件属性透传下去。因此点击typesubmit的按钮时原生submit事件触发formik.handleSubmitFormik 会先执行validate全部通过后才调用onSubmit回调并以alert展示格式化后的 JSON。若校验失败onSubmit不会被调用错误气泡即时更新——这是 Formik 默认的「提交时校验 变更后自动重新校验」行为。对照基础示例basic.md可以看到未接入校验时useFormik只配置initialValues和onSubmit字段值通过formik.values读取、formik.setFieldValue写入validation.md在此基础上仅新增validate与错误展示状态管理方式完全一致改动成本极低。四、从手写 validate 到 Yup 模式校验validation.md是校验链条的第一环同指南中 yup-schema-validation.md 展示了它的升级形态把validate函数替换为validationSchema属性其余代码Field封装、Form.Stack、错误气泡完全复用const validationSchema Yup.object().shape({ name: Yup.string().required(Required), email: Yup.string().email(Invalid email address).required(Required) }); const formik useFormik({ initialValues: { name: , email: }, validationSchema, onSubmit: values { alert(JSON.stringify(values, null, 2)); } });两种方式的对接点完全一致无论错误来自手写validate还是 Yup最终都收敛为{ fieldName: message }结构因此Field组件无需任何改动。如果偏好 Zod指南也提示可使用社区适配器zod-formik-adapter。React Suite 官方文档页面本身也声明了这两个集成依赖formik^2.4.5与yup^1.3.3见 index.tsx可作为版本参考。五、扩展让所有数据输入组件复用同一套校验Field封装还可以通过as属性泛化从而让DatePicker、Rate等非输入型组件也接入 Formik 校验见 other-input-components.mdconst Field ({ error, as: Component Input, ...rest }) { return ( Form.Group Component {...rest} / Form.ErrorMessage show{!!error} placementbottomStart {error} /Form.ErrorMessage /Form.Group ); }; Field as{DatePicker} namedate value{formik.values.date} error{formik.errors.date} onChange{value formik.setFieldValue(date, value)} /其校验模式与validation.md一脉相承只是把 Yup 的校验规则换成Yup.date()、Yup.number().min(2).max(5)等。这说明只要遵循「value由formik.values驱动、onChange走setFieldValue、error交给Form.ErrorMessage」三条约定React Suite 的任意数据输入组件都可以即插即用。六、小结与落地方案以validation.md为核心一套可复用的 React Suite Formik 校验方案可以总结为关注点推荐做法依据状态与校验useFormik统一管理validate返回errors对象validation.md错误展示Form.GroupForm.ErrorMessage show{!!error}FormErrorMessage.tsx提交处理Form onSubmit{formik.handleSubmit}透传原生事件Form.tsx升级路径将validate替换为validationSchemaYup组件零改动yup-schema-validation.md组件扩展Field支持as属性适配 DatePicker、Rate 等other-input-components.md按照这套方案你可以在保持 React Suite 统一视觉与交互的前提下获得 Formik 完整的校验与提交控制能力后续无论切换 Yup、Zod 还是升级校验规则Field组件与提交链路都无需结构性改动。赞分享前端UI组件【免费下载链接】rsuite A suite of React components .项目地址https://gitcode.com/gh_mirrors/rs/rsuite点击查看免费下载相关推荐Guzzle 7 PHP HTTP 客户端详解以 mailcow-dockerized 中的实际集成应用为例Guzzle 7 PHP HTTP 客户端详解以 mailcow dockerized 中的实际集成应用为例 本篇技术指南以 mailcow dockeriz前端UI组件txtai Summary 管道使用抽象式文本摘要管道text2text 模型实现长文本自动摘要txtai Summary 管道使用抽象式文本摘要管道text2text 模型实现长文本自动摘要 导读 本文围绕 txtai 的 Summary文本摘要前端UI组件如何在3分钟内上手vscan超简单安装与基础使用教程如何在3分钟内上手vscan超简单安装与基础使用教程 vscan是一款开源、轻量、快速、跨平台的网站漏洞扫描工具能够帮助您快速检测网站安全隐患功能涵盖端口网络安全漏洞扫描应用安全渗透测试上一篇OpenCode终端AI编程助手重新定义代码编写体验的5大突破下一篇OOMWOO clean-and-map 分阶段实现指南Arkz-Deepak 的 clean-only MVP 路线与覆盖率回归测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
超越屋顶线:从延迟天花板重新审视 Roofline 性能模型 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 9:25:10
Geyser 资源包转换完整指南:3 步把 Java 版材质带进基岩版 Geyser 资源包转换完整指南:3 步把 Java 版材质带进基岩版 【免费下载链接】Geyser A bridge/proxy allowing you to connect to Minecraft: Java Edition servers with Minecraft: Bedrock Edition. 项目地址: https://gitcode.com/GitHub_Trending/ge/Geyser … · 2026/9/27 9:25:03
网站建设发言材料2026最新:防黑挂马实战指南 网站建设发言材料2026最新:防黑挂马实战指南 昨晚三点,成都高新区某科技公司老板给我打电话,声音都在抖。他的企业官网首页突然变成了一片乱码,浏览器地址栏跳出红色“不安全”警告,后台被植入了博彩广告。他问我:“我的网站怎么一夜之间被黑了?这… · 2026/9/27 9:57:54
The Concise TypeScript Book 精讲:字面量类型(Literal Types)从基础到实战 文档教程 【免费下载链接】typescript-book The Concise TypeScript Book: A Concise Guide to Effective Development in TypeScript. Free and Open Source. 项目地址: https://gitcode.com/gh_mirrors/typ/typescript-book 点击查看 免费下载 本文是《The Conci… · 2026/9/27 9:57:42
乌鲁木齐全屋定制推荐:适合大宅意式设计的品牌分析 乌鲁木齐全屋定制指南:大宅意式设计的品牌选择与考量在乌鲁木齐进行家庭装修规划时,获取一份客观的乌鲁木齐全屋定制推荐参考清单,往往是业主开启装修旅程的重要一步。需要明确的是,本文旨在基于公开的市场信息、品牌定位差异以及… · 2026/9/27 9:57:36
Operit 数据救援:Preferences DataStore 配置文件健康检测与保全优先修复实战 AI Agent人工智能大模型AI 应用工具调用本地部署MCP ClientsAgent 记忆 【免费下载链接】Operit The most powerful AI agent and AI chat software on Android/Operit是一款Android上能力最为强大、发展最久的AI Agent 项目地址: https://gitcode.com/gh_mirrors/o… · 2026/9/27 9:57:36
wordpress上传至哪个目录下免费工具推荐 1个目录搞懂WordPress上传路径:图解步骤避坑指南 找建站公司,最怕的就是花大价钱却被忽悠装到错误目录,导致网站打不开或无法上传文件。别急,这套图解步骤能帮你一眼看穿真相,省下冤枉钱。… · 2026/9/27 9:57:36
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01