建筑公司网站设计模板,防控政策优化,实时热搜榜,长沙logo设计公司哪家好些在 React 中#xff0c;受控组件和非受控组件是两种处理表单元素#xff08;如输入框、选择框等#xff09;值的方式。
1. 受控组件
受控组件是指 React 组件的表单元素的值是由 React 组件的 state 来管理的。换句话说#xff0c;React 会全程控制表单元素的值#xff…在 React 中受控组件和非受控组件是两种处理表单元素如输入框、选择框等值的方式。
1. 受控组件
受控组件是指 React 组件的表单元素的值是由 React 组件的 state 来管理的。换句话说React 会全程控制表单元素的值每当输入框的内容发生变化时都会触发事件如 onChange并更新组件的 state从而使组件重新渲染。
特点
表单的值由 React 的 state 控制。必须通过 state 和 setState 来读取和修改表单元素的值。更容易实现表单验证和其他交互逻辑。
示例
import React, { useState } from react;function ControlledInput() {const [value, setValue] useState();const handleChange (e) {setValue(e.target.value); // 更新 state};return (inputtypetextvalue{value} // 由 state 控制值onChange{handleChange} // 更新 state/);}2. 非受控组件Uncontrolled Component
非受控组件是指表单元素的值不受 React state 的控制而是通过 DOM 元素的本地状态来处理。这意味着 React 不会直接管理表单元素的值值的管理交由 DOM 本身来控制。
特点
表单的值由 DOM 控制而非 React state。可以通过 ref 获取当前表单元素的值而不需要设置 value 和 onChange 处理事件。更接近传统的 HTML 表单操作方式适合简单场景。
示例
import React, { useRef } from react;function UncontrolledInput() {const inputRef useRef(null);const handleSubmit (e) {e.preventDefault();alert(输入的值是: inputRef.current.value); // 使用 ref 获取值};return (form onSubmit{handleSubmit}input typetext ref{inputRef} / {/* 不需要 value 和 onChange */}button typesubmit提交/button/form);
}总结
受控组件适用于复杂的交互场景如表单验证、动态表单等可以让 React 完全控制表单的行为。非受控组件适用于简单场景尤其是当表单不需要频繁的与 React 的 state 交互时。