React受控和不受控制的输入
受控输入和非受控输入是在 Web 开发中表单输入上下文中使用的术语,尤其是在 React 之类的框架中。
受控输入
在受控输入中,输入字段的值由组件的状态控制。这意味着组件的状态保存输入的当前值,当输入值发生变化时(例如,通过用户输入),它会更新状态,输入值会反映状态。这通常是通过将输入的值 prop 设置为状态值并提供 onChange 处理程序来在输入发生变化时更新状态来完成的。受控输入通常用于 React 应用程序中的表单处理。
import React, { useState } from 'react'; function ControlledInputExample() { const [inputValue, setInputValue] = useState(''); const handleChange = (e) => { setInputValue(e.target.value); }; return ( ); }
不受控制的输入
在非受控输入中,输入字段的值不直接由 React 状态控制。相反,输入元素在内部管理自己的状态。这意味着 React 无法直接控制输入值,并且要获取该值,您通常必须直接访问 DOM(例如,使用 refs)而不是查询 React 状态。非受控输入在 React 中不太常见,但在某些情况下很有用,例如处理复杂的表单行为或与以不同方式管理输入状态的非 React 库集成。
import React, { useRef } from 'react'; function UncontrolledInputExample() { const inputRef = useRef(null); const handleClick = () => { console.log(inputRef.current.value); }; return (); }
总而言之,受控输入将输入值直接绑定到 React 状态,从而在 UI 和状态之间提供更多控制和同步。不受控输入由 DOM 或其他库内部管理,React 会在需要时间接访问它们的值。