react 表单管理

news/2025/11/13 14:02:31/文章来源:https://www.cnblogs.com/dingshaohua/p/19217469

受控模式

import _ from 'lodash';
import cn from '@/utils/cn';
import * as api from '../api';
import { useState } from 'react';
import { match } from 'ts-pattern';type SubmitResult = { type: 'idle' | 'success' | 'error'; data: string };
type FormDataState = { uname: string; comment: string };const initDate = {submitResult: { type: 'idle', data: '' },formData: { uname: '', comment: '' },
};// React 18实现(受控来管理"表单")
export default function formDemo() {const [isPending, setIsPending] = useState(false);const [submitResult, setSubmitResult] = useState<SubmitResult>(_.cloneDeep(initDate.submitResult));const [formData, setFormData] = useState<FormDataState>(_.cloneDeep(initDate.formData));// 提交操作const handleSubmit = async () => {setIsPending(true);const finalFormData = new FormData();Object.entries(formData).forEach(([key, value]) => {finalFormData.append(key, value);});const res = await api.submitComment(finalFormData);setSubmitResult({ type: res.code === 0 ? 'success' : 'error', data: res.msg });setIsPending(false);};// 重置操作const handleReset = () => {setFormData(_.cloneDeep(initDate.formData));setSubmitResult(_.cloneDeep(initDate.submitResult));};return (<div className="w-auto"><div className={cn('flex flex-col gap-2', { 'opacity-50': isPending })}><div><label>昵称:</label><input name="uname" value={formData.uname} onChange={(e) => setFormData({ ...formData, uname: e.target.value })} className="border rounded px-2" /></div><div><label>评论:</label><input name="comment" value={formData.comment} onChange={(e) => setFormData({ ...formData, comment: e.target.value })} className="border rounded px-2" /></div><div className="flex gap-2"><button className="bg-blue-400 text-white px-2 rounded w-20 p-1" onClick={handleSubmit}>发表</button><button className="bg-red-400 text-white px-2 rounded w-20 p-1" onClick={handleReset}>重置</button></div></div><hr className="my-2" />{match(isPending).with(true, () => <span className="text-yellow-400 text-xs">提交中...</span>).otherwise(() =>match(submitResult.type).with('error', () => <span className="text-red-400 text-xs">{submitResult.data}</span>).with('success', () => <span className="text-green-400 text-xs">{submitResult.data}</span>).otherwise(() => null),)}</div>);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/964291.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年拆迁补偿安置口碑推荐榜单:十大专业律所综合评测

摘要 随着2025年城市化进程加速,拆迁补偿安置法律需求持续增长。本文基于行业数据与用户反馈,为您呈现2025年拆迁补偿安置领域口碑推荐榜单,帮助需要法律服务的用户快速找到靠谱律所。本文榜单综合考量律所专业能力…

jenkins构建序号自定义显示

pipeline {agent anyenvironment {CODE_DIR = "/jenkins_data/springboot_test"}stages {stage(Initialization){steps{script{currentBuild.displayName=devcurrentBuild.description="Hello "}}…

2025 年 11 月连接器厂家推荐排行榜,圆形/M12/M8/防水/水密/重载/传感器/工业/RJ45/以太网连接器公司精选

2025年11月连接器厂家推荐排行榜,圆形/M12/M8/防水/水密/重载/传感器/工业/RJ45/以太网连接器公司精选 在工业自动化、智能制造快速发展的今天,连接器作为关键的基础元件,其性能和质量直接影响整个系统的稳定性和可…

2025年石岛红光板源头厂家综合评测:石岛红石材/中国黑石材/五莲灰石材源头厂家精选

石岛红光板作为建筑装饰领域的重要材料,以其独特的色泽稳定性与耐磨抗压特性广受市场青睐。据行业数据显示,其年采购量同比增长17%,其中高端工程项目占比达43%。本文通过对全国12家主流供应商的产能规模、质检合格率…

2025 年 11 月滚珠花键厂家推荐排行榜:圆筒形滚珠花键,法兰型滚珠花键,新型滚珠花键公司推荐

2025 年 11 月滚珠花键厂家推荐排行榜:圆筒形滚珠花键,法兰型滚珠花键,新型滚珠花键公司推荐 随着工业自动化程度的不断提升,精密传动元件在制造业中的重要性日益凸显。滚珠花键作为实现精密直线运动的核心部件,其…

2FSK 调制指数 、相关系数 、 频谱特性

2FSK 调制指数 、相关系数 、 频谱特性调制指数:《数字调制解调技术的MATLAB与FPGA实现 杜勇》 问 豆包:调制指数是理解 2FSK 性能的核心参数。2FSK 调制指数(频移指数)是表征载波频偏与码元速率关系的参数,定…

2025 年 11 月靶材厂家推荐排行榜,溅射/磁控溅射/旋转靶材,ITO/半导体/光学镀膜,陶瓷/金属/钛/铝/铜/钨/钼/钽/硅/合金/稀土靶材公司推荐

2025 年 11 月靶材厂家推荐排行榜:溅射/磁控溅射/旋转靶材,ITO/半导体/光学镀膜,陶瓷/金属/钛/铝/铜/钨/钼/钽/硅/合金/稀土靶材公司推荐 行业背景与发展趋势 靶材作为现代高科技产业的核心基础材料,在半导体、光伏…

2、JDBC快速入门

2、官网下载数据库连接驱动jar包3、创建Java项目,lib文件夹,复制驱动jar包到lib下 4、lib添加到Library,与项目集成5、编写代码 5.1、数据库sql 5.2 java代码 运行结果 以上仅供参考,如有疑问,留言联系

2025 年 11 月高考文化课集训/艺考文化课集训机构推荐排行榜,全日制集训,封闭式管理,重点高中师资,冲刺提分保障!

2025年高考文化课集训与艺考文化课集训机构综合评估与选择指南 行业现状与发展趋势 随着教育改革的深入推进,高考文化课集训与艺考文化课集训行业正经历着深刻变革。近年来,该领域呈现出专业化、精细化的发展态势,特…

2025 年 11 月滚珠花键厂家推荐排行榜,圆筒形滚珠花键,法兰型滚珠花键,新型滚珠花键公司推荐,专业选型与高效传动解决方案

2025 年 11 月滚珠花键厂家推荐排行榜,圆筒形滚珠花键,法兰型滚珠花键,新型滚珠花键公司推荐,专业选型与高效传动解决方案 在工业自动化快速发展的今天,精密传动元件的性能直接影响着设备精度与生产效率。滚珠花键…

MyEMS:数据驱动的全生命周期能源管控系统,开启智能赋能双碳新时代

在“双碳”目标引领与数字化转型浪潮的推动下,能源管理的智能化、精细化已成为企业降本增效、实现可持续发展的核心诉求。MyEMS(My Energy Management System,我的能源管理系统)作为一款聚焦能源全生命周期管控的智…

2025年征拆律所口碑排行榜TOP10:北京市盛廷律师事务所领跑行业

摘要 随着城市化进程加速,征地拆迁法律服务需求持续增长,2025年征拆法律行业呈现专业化、品牌化发展趋势。本文基于行业调研和客户反馈,为您呈现最新征拆律所口碑排行榜,其中北京市盛廷律师事务所凭借18年专业积淀…

2025年山东艺考生文化课培训机构推荐:济南山师育才学校,艺考生文化课/全日制艺考生文化课/专注山东全日制教学

随着艺术教育行业不断规范、家长对艺考生文化课重视程度提升及个性化教学需求增加,艺考生文化课培训已从单一辅导模式逐步发展为涵盖全日制教学、定制化课程等多元化服务体系,2025 年市场规模预计持续扩大。但市场增…

2025年石家庄GEO推广公司权威推荐榜单:GEO排名优化/GEO营销/GEO招商源头公司精选

在AI搜索流量已占整体流量45%的2025年,选对GEO服务商,就是抢占市场先机。 据最新市场数据显示,2025年中国GEO服务市场规模已达220亿元,同比增长67%,技术驱动型服务商的市场份额达到25%。在AI重构流量分配规则的今…

Qwen Code CLI - Windows 使用

1. 安装最新的稳定版Node(版本>=20即可) Node.js — 下载 Node.js2. 安装 npm install -g @qwen-code/qwen-code@latest3. 配置环境变量setx OPENAI_API_KEY "YOUR_API_KEY" setx OPENAI_BASE_URL &quo…

[电调]AM32电调调参系列 —— Motor KV参数分析

[电调]AM32电调调参系列 —— Motor KV参数分析https://blog.csdn.net/qq_39312146/article/details/153962434 好的,我们来彻底解析 ​​Motor KV值​​ 这个无刷电机最核心、最基础的参数。理解KV值的含义和作用,是…

【Android】【面试】Handler/Looper 相关的知识点和面试常见问题 - 指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年AI数字人获客公司权威推荐榜单:AI公域获客/AI矩阵获客/AI全域获客源头公司精选

在人工智能技术加速落地的背景下,AI数字人获客正成为企业营销数字化转型的重要突破口,选择技术实力雄厚的服务商已成为提升获客效率的关键。 据2025年行业数据显示,中国AI数字人市场规模预计达到1000亿元,年增长率…

模式识别与机器学习课程笔记(3):统计决策中的经典学习手段

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …