Відповіді:
Це стосується компонентів 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через реквізит, але який повідомляє контролер onBlur?
<Button onClick={() => console.log("clicked")}>Click</Button>.