React 表单处理与网络请求封装详解[特殊字符][特殊字符]

在 React 开发中,表单处理和网络请求是非常常见的需求。本文将围绕以下几个方面展开讲解:

  1. FormItem 绑定 name 属性
  2. 表单校验与失焦校验
  3. 获取表单数据
  4. 封装请求模块 request

1. FormItem 绑定 name 属性

在 React 中,使用 Ant Design 的 Form 组件时,Form.Itemname 属性用于标识表单字段。这个 name 属性通常需要与后端接口的字段名保持一致,以便在提交表单时能够正确映射数据。

import { Form, Input } from 'antd';const MyForm = () => {return (<Form><Form.Item name="phone" label="手机号"><Input /></Form.Item></Form>);
};

注意:

  • name 属性是表单字段的唯一标识,必须与后端接口的字段名一致。
  • 如果后端字段名是 phoneNumber,那么 name 也应该设置为 phoneNumber

2. 表单校验与失焦校验

表单校验是确保用户输入数据符合要求的重要步骤。Ant Design 的 Form 组件提供了强大的校验功能,支持多种校验规则。

失焦校验

通过设置 validateTrigger="onBlur",可以在用户离开输入框时触发校验。

<Form.Itemname="phone"label="手机号"validateTrigger="onBlur"rules={[{required: true,message: '请输入手机号',},{pattern: /^1[3-9]\d{9}$/,message: '请输入正确的手机号',},]}
><Input />
</Form.Item>

校验规则说明:

  • required: true:表示该字段为必填项。
  • pattern:使用正则表达式校验手机号格式。
  • message:校验失败时的提示信息。
多条校验

校验规则可以按顺序执行,只有前一条规则通过后才会执行下一条规则。

rules={[{ required: true, message: '请输入手机号' },{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号' },
]}

3. 获取表单数据

在表单提交时,可以通过 onFinish 回调函数获取表单数据。onFinish 会在所有校验规则通过后触发。

const handleFinish = (values) => {console.log('表单数据:', values);// 在这里可以将数据提交到后端
};<Form onFinish={handleFinish}><Form.Item name="phone" label="手机号"><Input /></Form.Item><button type="submit">提交</button>
</Form>

说明:

  • values 是一个对象,包含了所有表单字段的值。
  • 如果校验失败,onFinish 不会触发。

4. 封装请求模块 request

在一个项目中,通常会有很多网络请求。为了统一管理和复用,可以使用 axios 封装一个通用的请求模块。

封装 request 模块
import axios from 'axios';// 创建 axios 实例
const request = axios.create({baseURL: 'https://api.example.com', // 根域名timeout: 5000, // 请求超时时间
});// 请求拦截器
request.interceptors.request.use((config) => {// 在发送请求之前做一些处理,例如添加 tokenconst token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;},(error) => {return Promise.reject(error);}
);// 响应拦截器
request.interceptors.response.use((response) => {// 对响应数据做一些处理return response.data;},(error) => {// 对响应错误做一些处理return Promise.reject(error);}
);export { request };
使用 request 模块

在项目中,可以通过 request 模块发送请求:

import { request } from './utils/request';const fetchData = async () => {try {const response = await request.get('/user');console.log('用户数据:', response);} catch (error) {console.error('请求失败:', error);}
};
统一配置

可以将 request 模块的配置放在 index.js 中,方便统一管理:

// utils/request/index.js
import axios from 'axios';const request = axios.create({baseURL: 'https://api.example.com',timeout: 5000,
});request.interceptors.request.use((config) => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});request.interceptors.response.use((response) => response.data,(error) => Promise.reject(error)
);export { request };

总结

  1. FormItem 绑定 name 属性:确保与后端字段名一致,方便数据映射。
  2. 表单校验与失焦校验:通过 rulesvalidateTrigger 实现灵活的校验逻辑。
  3. 获取表单数据:使用 onFinish 回调函数获取校验通过的表单数据。
  4. 封装请求模块:通过 axios 封装通用的 request 模块,统一管理网络请求,提升代码复用性和可维护性。

通过以上方法,可以高效地处理 React 中的表单和网络请求,提升开发效率和代码质量。

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

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

相关文章

“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce

文章目录 O 背景知识1 数据挖掘2 邦费罗尼原则3 TF.IDF4 哈希函数5 分布式文件系统 一、MapReduce基本介绍1. Map 任务2. 按键分组3. Reduce 任务4. 节点失效处理5.小测验&#xff1a;在一个大型语料库上有100个map任务和若干reduce任务&#xff1a; 二、基于MapReduce的基本运…

Linux系统的第一个进程是什么?

Linux进程的生命周期从创建开始&#xff0c;直至终止&#xff0c;贯穿了一个进程的整个存在过程。我们可以通过系统调用fork()或vfork()来创建一个新的子进程&#xff0c;这标志着一个新进程的诞生。 实际上&#xff0c;Linux系统中的所有进程都是由其父进程创建的。 既然所有…

使用tritonserver完成clip-vit-large-patch14图像特征提取模型的工程化。

1、关于clip-vit-large-patch14模型 关于openapi开源的clip-vit-large-patch14模型的特征提取&#xff0c;可以参考之前的文章&#xff1a;Elasticsearch向量检索需要的数据集以及768维向量生成这篇文章详细介绍了模型的下载地址、使用方式、测试脚本&#xff0c;可以让你一步…

人工智能之深度学习_[3] -PyTorch自动微分模块和构建线性回归模型

文章目录 自动微分模块9.1 梯度基本计算9.2 梯度下降法求最优解9.3 梯度计算注意点9.4 自动微分模块应用 10 PyTorch构建线性回归模型 自动微分模块 自动微分就是自动计算梯度值,也就是计算导数。 什么是梯度 对函数求导的值就是梯度 什么是梯度下降法 是一种求最优梯度值的方法…

logback日志自定义占位符

前言 在大型系统运维中&#xff0c;很大程度上是需要依赖日志的。在java大型web工程中&#xff0c;一般都会使用slf4jlogback这一个组合来实现日志的管理。 logback中很多现成的占位符可以可以直接使用&#xff0c;比如线程号【%t】、时间【%d】、日志等级【%p】&#xff0c;…

Qt中自定义信号与槽

在学习信号和槽的时候&#xff0c;我们知道信号一般对应的就是用户的行为&#xff0c;槽指的是接受到信号后的响应&#xff0c;在类内有许多的内置信号和槽函数&#xff0c;能够去实现一些常见的行为&#xff0c;但实际业务开发中&#xff0c;尤其是接受到信号的响应会根据具体…

Yearning开源MySQL SQL审核平台

一款MYSQL SQL语句/查询审计工具&#xff0c;为DBA与开发人员使用. 本地部署&#xff0c;注重隐私&#xff0c;简单高效的MYSQL审计平台。 它可以通过流程审批&#xff0c;实现真实线上环境sql的审核和执行&#xff0c;还可以回滚执行&#xff0c;能够确保线上SQL更新的可靠性…

【Python项目】小区监控图像拼接系统

【Python项目】小区监控图像拼接系统 技术简介&#xff1a;采用Python技术、B/S框架、MYSQL数据库等实现。 系统简介&#xff1a;小区监控拼接系统&#xff0c;就是为了能够让业主或者安保人员能够在同一时间将不同地方的图像进行拼接。这样一来&#xff0c;可以很大程度的方便…

汇编与逆向(一)-汇编工具简介

RadASM是一款著名的WIN32汇编编辑器&#xff0c;支持MASM、TASM等多种汇编编译器&#xff0c;Windows界面&#xff0c;支持语法高亮&#xff0c;自带一个资源编辑器和一个调试器。 一、汇编IDE工具&#xff1a;RadASM RadASM有内置的语言包 下载地址&#xff1a;RadASM asse…

基于STM32的智能门锁安防系统(开源)

目录 项目演示 项目概述 硬件组成&#xff1a; 功能实现 1. 开锁模式 1.1 按键密码开锁 1.2 门禁卡开锁 1.3 指纹开锁 2. 功能备注 3. 硬件模块工作流程 3.1 步进电机控制 3.2 蜂鸣器提示 3.3 OLED显示 3.4 指纹与卡片管理 项目源代码分析 1. 主程序流程 (main…

AUTOSAR OS模块详解(三) Alarm

AUTOSAR OS模块详解(三) Alarm 本文主要介绍AUTOSAR OS的Alarm&#xff0c;并对基于英飞凌Aurix TC3XX系列芯片的Vector Microsar代码和配置进行部分讲解。 文章目录 AUTOSAR OS模块详解(三) Alarm1 简介2 功能介绍2.1 触发原理2.2 工作类型2.3 Alarm启动方式2.4 Alarm配置2.5…

YOLO目标检测1

一. 参考资料 《YOLO目标检测》 by 杨建华博士 二. 背景 2.1 目标检测发展简史 2014年&#xff0c;RCNN问世&#xff0c;R-CNN的思路是先使用一个搜索算法从图像中提取出若干感兴趣区域(region of interest&#xff0c;RoI)&#xff0c;然后使用一个卷积神经网络(convolutio…

【Qt 常用控件】显示类控件——QLabel

目录 1.QLabel 1.1 textFormat 文本类型 普通文本和富文本 Markdown格式 1.2 alignment 文本对齐方式 1.3 wordWrap 自动换行 1.4 indent 文本缩进 1.5 margin 边距 1.6 buddy&#xff0c;qlabel伙伴 1.7 pixmap图片 和 scaledContents自动填充 1.QLabel 功能&#x…

vif-方差膨胀因子计算

vif-方差膨胀因子 使用statsmodels中的variance_inflation_factor&#xff0c;数据集使用乳腺癌数据集 import pandas as pd import numpy as np from sklearn.datasets import load_breast_cancer from tqdm import notebook from statsmodels.stats.outliers_influence impor…

查看电脑或笔记本CPU的核心数方法及CPU详细信息

一、通过任务管理器查看 1.打开任务管理器 可以按下“Ctrl Shift Esc”组合键&#xff0c;或者按下“Ctrl Alt Delete”组合键后选择“任务管理器”来打开。 2.查看CPU信息 在任务管理器界面中&#xff0c;点击“性能”标签页&#xff0c;找到CPU使用记录区域&#xff0c…

数据恢复常见故障(四)关键信号的耦合电容撞件后导致SATA前端通信异常

数据恢复常见故障&#xff08;四&#xff09;关键信号耦合电容撞件后导致SATA前端通信异常 SATA固态硬盘SATA差分信号上有耦合电容&#xff0c;电容被撞件后&#xff0c;偏移&#xff0c;导致接触不良&#xff0c;引起SATA前端信号通信异常&#xff0c;故障现象表现为不认盘&a…

[HCTF 2018]WarmUp

题目&#xff1a;一上来给了个图片还是很懵的&#xff0c;于是尝试查看一下源代码&#xff1a;发现有提示&#xff1a;于是访问source.php得到了php代码&#xff1a;(这里将代码和代码分析放一块) <?phphighlight_file(__FILE__); class emmm{public static function chec…

MYSQL数据库基础-01.数据库的基本操作

数据库的语法是大小写不敏感的&#xff0c;可以使用大写&#xff0c;也可以使用小写。 每条语句要以&#xff1b;结尾&#xff0c;可以多行输入。 名称不能是关键字,若想用关键字命名,要用反引号 引起来。 目录 一.数据库的基本操作 1.创建数据库&#xff1a; 2.查看数据库…

Decode Global专注金融创新,构建便捷的交易平台

随着金融市场持续进阶&#xff0c;越来越多的年轻正在涌入金融交易的体系中&#xff0c;针对当下年轻人崇尚精简&#xff0c;优中取优的特点&#xff0c;Decode Global紧跟金融市场发展的步伐&#xff0c;不断创新体验&#xff0c;致力于打造一个精简快捷&#xff0c;安全便捷的…

系统思考—转型

我们大多数问题的来源是&#xff1a;人们的思考方式与大自然的运作方式之间的差异。——葛雷果利贝特森&#xff08;人类学家、生物学家及系统思考先驱&#xff09; 在企业转型的过程中&#xff0c;许多企业创始人常常面临一个困境——过去的成功经验和旧有的思维方式&#xf…