Вопрос проверяет понимание управления формами и состоянием ввода в React.
Контролируемые компоненты управляются через state.
Неконтролируемые компоненты хранят состояние внутри DOM.
Контролируемые дают больше контроля и предсказуемости.
Неконтролируемые проще, но менее гибкие.
Работа с формами — один из базовых сценариев в React.
Контролируемый компонент — значение элемента управляется через state
Неконтролируемый компонент — значение хранится в DOM и читается через ref
Особенности:
значение задаётся через value
изменения обрабатываются через onChange
состояние всегда синхронизировано с UI
const [value, setValue] = useState('');
<input value={value} onChange={e => setValue(e.target.value)} />
Особенности:
значение хранится в DOM
используется defaultValue
чтение происходит через ref
<input ref={inputRef} defaultValue="test" />
Контролируемые:
проще валидировать
удобнее тестировать
легче синхронизировать
Неконтролируемые:
меньше кода
подходят для простых форм
Контролируемые компоненты предпочтительны для сложных форм и бизнес-логики. Неконтролируемые подходят для простых сценариев.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию