news 2026/4/19 17:22:04

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/17 3:16:45

大模型核心技术:从基础训练到多模态适配的完整指南

文章详细介绍了大模型的三大训练阶段&#xff1a;预训练阶段&#xff08;无监督学习海量数据&#xff09;、指令微调阶段&#xff08;使用带标签数据二次训练&#xff09;和人类反馈强化学习阶段&#xff08;引入人类评价进行价值对齐&#xff09;。同时阐述了优化大模型的几种…

作者头像 李华
网站建设 2026/4/18 7:38:26

MAF快速入门(13)常见智能体编排模式

大家好&#xff0c;我是Edison。 最近我一直在跟着圣杰的《.NETAI智能体开发进阶》课程学习MAF开发多智能体工作流&#xff0c;我强烈推荐你也上车跟我一起出发&#xff01; 上一篇&#xff0c;我们学习了MAF中如何进行子工作流。本篇&#xff0c;我们来了解下在MAF中如何快速…

作者头像 李华
网站建设 2026/4/17 14:49:12

《AI Flow: Perspectives, Scenarios, and Approaches》论文解读

《AI Flow: Perspectives, Scenarios, and Approaches》论文深度解读 &#xff08;论文链接&#xff1a;https://arxiv.org/html/2506.12479v1&#xff0c;发布于2025年6月14日&#xff0c;领域&#xff1a;cs.AI&#xff09; 一、论文基本信息 1. 核心团队与背景 作者单位&…

作者头像 李华
网站建设 2026/4/17 19:32:38

软件测试之单元测试

所谓单元测试指&#xff0c;指的是对软件中最小可测试单元开展细致的检查与验证工作。 具体而言&#xff0c;它主要用于检验单个类的准确性&#xff0c;确保其功能符合预期。 单元测试与集成测试、系统测试存在显著差异。它是软件开发流程中前置的测试环节&#xff0c;规模最…

作者头像 李华