Coursera 笔记

Module 03 · In-depth Understanding of Advanced React Functionality深入理解 React 高级功能

Implementing Forms实现表单功能

Coursera ↗

欢迎观看本视频!今天我们将讨论 表单 在 React 中的实现。观看完视频后,您将能够:

  • 解释表单的目的
  • 比较和对比受控与非受控组件
  • 总结 React Hook 表单库在表单开发中的优势

什么是表单?

表单是用户与网页数据进行交互的一种方式。例如,用户注册、填写调查问卷或下订单时,通常会用到表单。用户与数据交互的区域称为 字段(Fields)。

常见字段类型

  • 文本框(Textboxes)
  • 下拉菜单(Drop-down menus)
  • 单选按钮(Radio buttons)
  • 复选框(Checkboxes)

表单的主要功能

  1. 数据输入:用户通过表单输入数据。
  2. 提交逻辑:处理用户提交数据的逻辑。
  3. 数据验证:确保用户输入的数据符合要求。

例如:

  • 用户输入密码时,应用可能要求他们两次输入密码并设置密码规则(如最小字符数)。

React 中的表单开发

在 React 中,表单的功能通常通过组件来实现。React 通过组件的 状态管理 来捕获输入内容,并且通过 setState 方法进行更新。数据不会直接从表单提交到服务器,而是先存储在组件状态中。


表单验证

表单验证通常包括以下几个步骤:

  1. 获取输入:收集用户输入的数据。
  2. 管理和更新表单状态:确保表单数据始终保持更新。
  3. 验证输入值:检查用户输入是否符合规则。
  4. 显示错误信息:如果输入不符合规则,展示合适的错误提示。

受控组件 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 中管理用户输入,并实现复杂的表单功能。 🌟