news 2026/3/30 15:38:03

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/3/14 5:55:48

论文开题“黑科技”:书匠策AI如何成为你的科研导航仪?

在学术研究的漫长征途中&#xff0c;开题报告就像是一张精准的地图&#xff0c;指引着研究者穿越知识的迷雾&#xff0c;找到属于自己的研究宝藏。然而&#xff0c;对于许多科研新手来说&#xff0c;撰写一份高质量的开题报告却如同攀登一座陡峭的山峰&#xff0c;既耗时又费力…

作者头像 李华
网站建设 2026/3/28 16:25:01

大模型知识增强指南:RAG与微调的优劣势对比与场景选择

文章对比分析了两种大模型知识增强方法&#xff1a;RAG通过检索用户文档库让模型基于特定资料作答&#xff0c;解决知识接入问题&#xff1b;微调则在模型内部写入专业知识&#xff0c;增强垂直领域能力并固化行为。RAG成本低、操作简单&#xff0c;适合个人用户&#xff1b;微…

作者头像 李华
网站建设 2026/3/26 17:38:30

A2A 协议的工作流程是怎样的?

A2A&#xff08;Agent-to-Agent&#xff09;协议是一种用于智能代理之间通信和协作的协议。以下是A2A协议的典型工作流程&#xff1a; A2A协议工作流程 1. 初始化阶段 代理注册&#xff1a;各个代理向A2A注册中心注册自己的能力、服务类型和通信地址能力发现&#xff1a;代理查…

作者头像 李华
网站建设 2026/3/27 17:21:30

大模型训练三阶段完全指南:从预训练到对齐,一文掌握GPT/LLaMA等模型训练流程(建议收藏)

大模型训练分为预训练、微调和对齐三阶段。预训练阶段使用TB级数据学习通用语言能力&#xff1b;微调阶段通过GB级高质量数据增强特定任务能力&#xff1b;对齐阶段确保输出符合人类价值观&#xff0c;采用3H原则。这三个阶段从知识基础、任务适配到价值对齐&#xff0c;共同构…

作者头像 李华
网站建设 2026/3/13 20:38:10

从传统AI到 Agentic AI:教育技术中,提示工程架构师的转型之路!

从传统AI到Agentic AI&#xff1a;教育技术中&#xff0c;提示工程架构师的转型之路 一、引言&#xff1a;当“机械导师”遇到“主动学习者” 你是否见过这样的场景&#xff1f; 一个学生用某款英语背单词APP&#xff0c;连续3天收到“abandon”的复习提醒——哪怕他早就把这…

作者头像 李华