Module 03 · In-depth Understanding of Advanced React Functionality深入理解 React 高级功能
Implementing Forms实现表单功能
欢迎观看本视频!今天我们将讨论 表单 在 React 中的实现。观看完视频后,您将能够:
- 解释表单的目的
- 比较和对比受控与非受控组件
- 总结 React Hook 表单库在表单开发中的优势
什么是表单?
表单是用户与网页数据进行交互的一种方式。例如,用户注册、填写调查问卷或下订单时,通常会用到表单。用户与数据交互的区域称为 字段(Fields)。

常见字段类型
- 文本框(Textboxes)
- 下拉菜单(Drop-down menus)
- 单选按钮(Radio buttons)
- 复选框(Checkboxes)
表单的主要功能
- 数据输入:用户通过表单输入数据。
- 提交逻辑:处理用户提交数据的逻辑。
- 数据验证:确保用户输入的数据符合要求。
例如:
- 用户输入密码时,应用可能要求他们两次输入密码并设置密码规则(如最小字符数)。

React 中的表单开发
在 React 中,表单的功能通常通过组件来实现。React 通过组件的 状态管理 来捕获输入内容,并且通过 setState 方法进行更新。数据不会直接从表单提交到服务器,而是先存储在组件状态中。
表单验证
表单验证通常包括以下几个步骤:
- 获取输入:收集用户输入的数据。
- 管理和更新表单状态:确保表单数据始终保持更新。
- 验证输入值:检查用户输入是否符合规则。
- 显示错误信息:如果输入不符合规则,展示合适的错误提示。
受控组件 vs 非受控组件

受控组件(Controlled Components)
在受控组件中,React 状态管理表单数据。这意味着你必须明确编写代码来创建状态,并指示如何在数据变化时更新该状态。
优点
- 提供更高的控制。
- 易于与其他 React 功能(如表单验证)集成。
缺点
- 代码量稍多。
- 需要处理用户交互时的所有状态变化。

非受控组件(Uncontrolled Components)
在非受控组件中,浏览器管理表单元素的状态。React 只负责初始化值,而浏览器自己管理后续的状态更新。
优点
- 更少的代码。
- 开发起来更简单。
缺点
- 对表单数据的控制较少。
- 难以与 React 的其他功能集成。

受控与非受控组件对比
| 特性 | 受控组件 | 非受控组件 |
|---|---|---|
| 数据管理 | 由 React 状态管理数据 | 由浏览器的 DOM 管理数据 |
| 代码复杂度 | 需要更多的代码 | 代码较少,简单开发 |
| 数据更新 | 通过事件处理(如 onChange)更新状态 | 数据由 DOM 自动更新 |
| 与 React 功能集成 | 容易集成其他 React 功能 | 与 React 的集成较为复杂 |
如何创建受控组件
下面是一个简单的受控组件示例,该组件处理用户的 注册表单:

import React, { useState } from 'react';
function RegistrationForm() {
const [email, setEmail] = useState('');
const handleSubmit = (e) => {
e.preventDefault();
console.log("Email submitted: ", email);
};
return (
<form onSubmit={handleSubmit}>
<input
type="email"
value={email} // 绑定表单字段与 React 状态
onChange={(e) => setEmail(e.target.value)} // 更新状态
/>
<button type="submit">Submit</button>
</form>
);
}
export default RegistrationForm;
React Hook 表单库(React Hook Form)
React Hook Form 是一个帮助您进行表单状态管理和验证的库。它可以减少开发人员编写的代码量,并通过避免不必要的组件重新渲染来提高性能。
安装
npm install react-hook-form
优点
- 降低表单组件的重新渲染频率。
- 简化表单验证和状态管理代码。
视频总结
在本视频中,您学习了:
- 表单为用户与应用程序数据交互提供了一个途径。
- 表单通常需要 输入字段、提交逻辑 和 验证规则 来处理用户输入。
- 非受控组件 由浏览器管理数据,适用于简单场景;受控组件 由 React 状态管理数据,提供更高的控制和集成能力。
- 使用 React Hook Form 库可以优化性能,减少代码量。
通过掌握表单的实现,您可以更高效地在 React 中管理用户输入,并实现复杂的表单功能。 🌟