Answers:
这与有状态DOM组件(表单元素)有关,而React文档解释了区别:
props
和通过像回调通知变化onChange
。父组件通过处理回调并管理自己的状态并将新值作为道具传递给受控组件来“控制”它。您也可以将其称为“哑组件”。ref
,当你需要它来找到它的当前值。这有点像传统的HTML。大多数本地React表单组件都支持受控和不受控制的用法:
// Controlled:
<input type="text" value={value} onChange={handleChange} />
// Uncontrolled:
<input type="text" defaultValue="foo" ref={inputRef} />
// Use `inputRef.current.value` to read the current value of <input>
在大多数(或所有)情况下,应使用受控组件。
state
而不是通过props
?
props
。不受控制的组件将用于state
内部控制值本身。这是关键的区别。
controlled components
(<input type="text" value="value" onChange={handleChangeCallbackFn} />
),而传统的HTML中,输入元素处理自己的值并可以通过refs
调用uncontrolled components
(<value type="text" />
)进行读取。受控组件通过setState
作为道具的父组件或从其父组件获取状态来管理自己的状态。
defaultValue
通过props 获取但通知控制器的组件onBlur
?