Sobes.tech
Back to questions
Middle
5

Для чего вообще нужен useState и почему мы не можем просто изменять переменную напрямую или использовать useRef?

Companies where asked
А7-Технологии

Answer from AI

sobes.tech AI

useState в React нужен для того, чтобы управлять состоянием компонента и автоматически инициировать повторный рендер при изменении этого состояния. Если просто изменить переменную напрямую, React не узнает об изменении и не обновит UI.

useRef хранит изменяемое значение, но изменение ref не вызывает перерисовку компонента, поэтому его используют для хранения данных, которые не влияют на отображение (например, таймеры, DOM-элементы).

Пример:

import React, { useState, useRef } from 'react';

function Counter() {
  const [count, setCount] = useState(0); // изменение вызывает рендер
  const countRef = useRef(0); // изменение не вызывает рендер

  const incrementState = () => setCount(count + 1);
  const incrementRef = () => { countRef.current += 1; console.log(countRef.current); };

  return (
    <div>
      <p>State count: {count}</p>
      <button onClick={incrementState}>Increment State</button>
      <button onClick={incrementRef}>Increment Ref</button>
    </div>
  );
}

Здесь при нажатии на "Increment State" компонент перерисуется и обновит UI, а при "Increment Ref" — только изменится значение в ref, но UI не обновится.