news 2026/6/15 11:40:48

React中使用Formik和UUID生成唯一标识符的实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
React中使用Formik和UUID生成唯一标识符的实践

在React应用中,表单处理是一个常见的需求。通过使用Formik库,我们可以简化表单状态管理和验证过程。但有时,我们需要在提交表单时自动生成一个唯一的标识符(如UUID)来确保数据的唯一性。本文将结合实际代码示例,探讨如何在React中使用Formik和UUID来实现这一功能。

初始化Formik表单

首先,我们需要在React组件中初始化一个Formik表单。以下是一个基本的表单结构:

importReact,{useState,useEffect}from'react';import{useFormik}from'formik';import*asYupfrom'yup';import{v4asuuid}from'uuid';constFormikYupAddBook=()=>{const[valueArray,setValueArray]=useState(getDataFromLs());const[id,setId]=useState('');useEffect(()=>{localStorage.setItem('valueArray',JSON.stringify(valueArray));},[valueArray]);constformik=useFormik({initialValues:{bookId:"",bookName:"",autherName:"",},validationSchema:Yup.object({bookName:Yup.string().required("请输入书名").min(3,"书名不得少于3个字符"),autherName:Yup.string().required("请输入作者名").min(4,"作者名不得少于4个字符").max(10,"作者名不得超过10个字符"),}),onSubmit:(values)=>{constid=uuid();// 在提交时生成UUIDconstupdatedValues={...values,bookId:id};setValueArray(prev=>[...prev,updatedValues]);formik.resetForm();}});// 表单组件代码...}

自动生成UUID

onSubmit回调函数中,我们通过uuid()函数生成一个新的UUID,并将其与用户输入的其他数据合并到一个新的对象中。这个过程确保了每个提交的表单数据都有一个独一无二的标识符:

onSubmit:(values)=>{constid=uuid();// 生成UUIDconstupdatedValues={...values,bookId:id};setValueArray(prev=>[...prev,updatedValues]);formik.resetForm();// 重置表单以便下次使用}

保存数据到本地存储

为了确保数据的持久化,我们使用了localStorage将数据保存到浏览器的本地存储中:

useEffect(()=>{localStorage.setItem('valueArray',JSON.stringify(valueArray));},[valueArray]);

显示数据

最后,我们可以将这些数据显示在一个表格中,以供用户查看已添加的书籍:

<Table striped bordered hover> <thead> <tr> <th>#</th> <th>书名</th> <th>作者</th> </tr> </thead> <tbody> {valueArray.map((book) => ( <tr key={book.bookId}> <td>{book.bookId}</td> <td>{book.bookName}</td> <td>{book.autherName}</td> </tr> ))} </tbody> </Table>

通过上述方法,我们不仅实现了表单的提交和验证,还通过自动生成UUID来确保每个书籍记录的唯一性。这种方式不仅增强了数据的可管理性,还为后续的扩展提供了基础,如数据的查找、更新和删除操作。

希望这篇博文能为你使用Formik处理React表单提供一些有用的实践思路和具体实现方法。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 7:15:06

python 健康饮食管理微信小程序

目录 健康饮食管理微信小程序摘要核心功能技术实现用户价值 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 健康饮食管理微信小程序摘要 核心功能 饮食记录与分析 用户可录入每日饮食&#xff08;如菜品…

作者头像 李华
网站建设 2026/6/14 0:21:47

python“学课助手”课堂助手笔记考试系统小程序

目录Python“学课助手”课堂助手笔记考试系统小程序摘要核心功能模块技术实现要点特色功能应用场景项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作Python“学课助手”课堂助手笔记考试系统小程序摘要 该小…

作者头像 李华
网站建设 2026/6/15 12:37:42

python基于微信小程序的急救常识学习系统

目录 系统概述核心功能技术架构应用场景 项目技术支持可定制开发之功能亮点源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作 系统概述 Python基于微信小程序的急救常识学习系统是一个结合后端技术与移动端应用的解决方案&#xff0c;旨在通…

作者头像 李华
网站建设 2026/6/15 13:34:39

温暖治愈的简短故事清单:5个长篇童话,把今晚的不安轻轻放下

睡前故事从来不是孩子的专属。对很多成年人来说&#xff0c;“温暖治愈的简短故事”之所以会被反复搜索&#xff0c;背后其实是一个很现实的需求&#xff1a;用可预测、低刺激的叙事&#xff0c;帮助大脑从高唤醒状态慢慢降下来&#xff0c;更容易进入睡眠节律。叙事心理学里也…

作者头像 李华
网站建设 2026/6/15 13:34:58

多模态AI服务的“流量容灾”:根据内容类型切换备份节点

多模态AI服务的“流量容灾”:根据内容类型切换备份节点 引言:多模态AI时代的容灾新挑战 随着GPT-4V、Claude 3、Gemini Pro等多模态AI模型的普及,越来越多的应用开始处理文本、图像、音频、视频等混合输入。比如: 智能聊天机器人需要同时理解用户的文字提问和上传的图片;…

作者头像 李华
网站建设 2026/6/15 13:34:52

面试 Java 基础八股文十问十答第二十一期

面试 Java 基础八股文十问十答第二十一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;Java语言有哪些特点…

作者头像 李华