news 2026/4/16 9:46:14

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/4/16 11:13:29

HarmonyOS PC 应用,真的只是“放大版 App”吗?

子玥酱 &#xff08;掘金 / 知乎 / CSDN / 简书 同名&#xff09; 大家好&#xff0c;我是 子玥酱&#xff0c;一名长期深耕在一线的前端程序媛 &#x1f469;‍&#x1f4bb;。曾就职于多家知名互联网大厂&#xff0c;目前在某国企负责前端软件研发相关工作&#xff0c;主要聚…

作者头像 李华
网站建设 2026/4/16 12:45:43

【开题答辩全过程】以 某医院病历管理系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/4/13 11:20:16

主持专业创业踩坑记?我的经验分享,靠自我提升从亏损到盈利

从专业主持人到独立创办工作室&#xff0c;我经历了八个月的摸索期&#xff0c;走过不少弯路&#xff0c;最终通过系统性的自我调整与提升&#xff0c;逐步构建了健康的运营模式。这段历程让我认识到&#xff0c;主持领域的创业&#xff0c;远不止于台上“会说话”的能力&#…

作者头像 李华
网站建设 2026/4/14 15:36:23

程序员如何转型AI产品经理:大模型学习路径与实战分享

本文分享了作者从产品经理转型AI的经历&#xff0c;介绍了人工智能市场与产品分类&#xff0c;分析了AI产品经理应具备的职业技能&#xff08;AIPMX&#xff09;&#xff0c;提供了从零开始的学习路径和资源推荐。文章强调AI产品经理需理解AI技术特性、产品管理能力和行业知识&…

作者头像 李华
网站建设 2026/4/16 11:00:42

程序员必看:构建大语言模型的四个关键阶段,建议收藏学习

文章详解了构建大语言模型的四个阶段&#xff1a;预训练&#xff08;学习语言基础&#xff09;、指令微调&#xff08;遵循指令&#xff09;、偏好微调&#xff08;对齐人类价值观&#xff09;和推理微调&#xff08;强化推理能力&#xff09;。从随机初始化模型开始&#xff0…

作者头像 李华
网站建设 2026/4/16 12:43:22

大数据 Cassandra 中的数据序列化与反序列化

大数据 Cassandra 中的数据序列化与反序列化&#xff1a;从快递包裹到分布式数据库的秘密 关键词&#xff1a;Cassandra、序列化、反序列化、数据持久化、分布式存储、二进制协议、SSTable 摘要&#xff1a;在分布式数据库 Cassandra 的世界里&#xff0c;数据就像一群需要跨城…

作者头像 李华