Демистификация контролируемых и неконтролируемых компонентов в React: руководство для начинающих

Когда дело доходит до создания веб-приложений с помощью React, очень важно понимать концепцию контролируемых и неконтролируемых компонентов. В этой статье мы рассмотрим, что означают эти термины, чем они отличаются, и предоставим примеры кода, которые помогут вам понять эти концепции. Итак, приступим!

Что такое контролируемые компоненты?
Управляемые компоненты в React — это те, значения формы которых контролируются состоянием компонента. Другими словами, состояние компонента является единственным источником истинного значения входных данных формы. Всякий раз, когда пользователь взаимодействует с вводом, состояние компонента соответствующим образом обновляется.

Пример кода:

import React, { useState } from 'react';
const ControlledComponent = () => {
  const [value, setValue] = useState('');
  const handleChange = (event) => {
    setValue(event.target.value);
  };
  return (
    <input type="text" value={value} onChange={handleChange} />
  );
};
export default ControlledComponent;

В приведенном выше коде переменная состояния valueсодержит текущее значение поля ввода. Функция handleChangeобновляет состояние каждый раз, когда пользователь вводит данные. Для входного свойства valueустановлена ​​переменная состояния value, что гарантирует, что компонент всегда отражает текущее состояние.

Что такое неконтролируемые компоненты?
С другой стороны, неконтролируемые компоненты позволяют входным данным формы сохранять свое собственное внутреннее состояние. В этом случае компонент не контролирует значение ввода формы. Вместо этого вы можете получить входное значение, используя ссылку, после того, как пользователь взаимодействовал с ним.

Пример кода:

import React, { useRef } from 'react';
const UncontrolledComponent = () => {
  const inputRef = useRef();
  const handleClick = () => {
    const value = inputRef.current.value;
    console.log(value);
  };
  return (
    <div>
      <input type="text" ref={inputRef} />
      <button onClick={handleClick}>Get Value</button>
    </div>
  );
};
export default UncontrolledComponent;

В приведенном выше коде inputRefиспользуется для получения ссылки на элемент ввода. При нажатии кнопки функция handleClickизвлекает входное значение, обращаясь к inputRef.current.value.

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

В этой статье мы рассмотрели различия между контролируемыми и неконтролируемыми компонентами в React. Контролируемые компоненты полагаются на состояние компонента для управления входными значениями формы, тогда как неконтролируемые компоненты позволяют входным данным формы поддерживать свое собственное внутреннее состояние. Поняв эти концепции и применив соответствующий подход в зависимости от вашего варианта использования, вы будете хорошо подготовлены к созданию надежных и эффективных приложений React.