Sobes.tech
Назад к вопросам
Middle
4

Что такое контролируемые и неконтролируемые компоненты в React?

Компании, где спрашивали
Smitex

Ответ от нейросети

sobes.tech AI

В React контролируемый компонент — это компонент, состояние которого полностью управляется React через props и state. Значение элемента формы (например, input) хранится в состоянии компонента, и любые изменения обрабатываются через обработчики событий, обновляющие state.

Неконтролируемый компонент — это компонент, который управляет своим собственным состоянием внутри DOM, и React не контролирует значение напрямую. Для доступа к значению используется ref.

Пример контролируемого компонента:

function ControlledInput() {
  const [value, setValue] = React.useState('');

  return (
    <input
      type="text"
      value={value}
      onChange={e => setValue(e.target.value)}
    />
  );
}

Пример неконтролируемого компонента:

function UncontrolledInput() {
  const inputRef = React.useRef(null);

  const handleSubmit = () => {
    alert(inputRef.current.value);
  };

  return (
    <>
      <input type="text" ref={inputRef} />
      <button onClick={handleSubmit}>Показать значение</button>
    </>
  );
}

Контролируемые компоненты дают больше контроля и удобны для валидации, но требуют больше кода. Неконтролируемые проще в простых случаях, но менее гибкие.