React 表单

2025年3月17日 | 阅读 3 分钟

表单是任何现代 Web 应用程序不可或缺的一部分。它允许用户与应用程序交互,并从用户那里收集信息。 表单可以执行许多任务,具体取决于您的业务需求和逻辑的性质,例如用户身份验证、添加用户、搜索、过滤、预订、订购等。表单可以包含文本字段、按钮、复选框、单选按钮等。

创建表单

React 提供了一种有状态的、响应式的表单构建方法。 组件而不是 DOM 通常处理 React 表单。 在 React 中,表单通常通过使用受控组件来实现。

React 中主要有两种类型的表单输入。

  1. 非受控组件
  2. 受控组件

非受控组件

非受控输入类似于传统的 HTML 表单输入。 DOM 本身处理表单数据。 在这里,HTML 元素维护自己的状态,该状态将在输入值更改时更新。 要编写非受控组件,您需要使用 ref 从 DOM 获取表单值。 换句话说,无需为每次状态更新编写事件处理程序。 您可以使用 ref 从 DOM 访问表单的输入字段值。

示例

在此示例中,代码在非受控组件中接受一个字段usernamecompany name

输出

执行上述代码后,您将看到以下屏幕。

React Forms

在字段中填写数据后,您会收到可以在下面的屏幕中看到的消息。

React Forms

受控组件

在 HTML 中,表单元素通常维护自己的状态并根据用户输入更新它。 在受控组件中,输入表单元素由组件而不是 DOM 处理。 在这里,可变状态保存在 state 属性中,并且仅使用 setState() 方法更新。

受控组件具有控制数据在每个 onChange event 上传递到其中的函数,而不是仅获取一次数据,例如,当您单击提交按钮时。 然后将此数据保存到状态并使用 setState() 方法更新。 这使得组件可以更好地控制表单元素和数据。

受控组件通过 props 获取其当前值,并通过像 onChange 事件这样的 callbacks 通知更改。 父组件通过处理回调并管理其自身的状态,然后将新值作为 props 传递给受控组件来“控制”此更改。 它也被称为“哑组件”。

示例

输出

执行上述代码后,您将看到以下屏幕。

React Forms

在字段中填写数据后,您会收到可以在下面的屏幕中看到的消息。

React Forms

在受控组件中处理多个输入

如果要处理多个受控输入元素,请为每个元素添加一个 name 属性,然后处理程序函数根据 event.target.name 的值决定要执行的操作。

示例

输出

React Forms