Вопрос проверяет понимание механизма ререндера и различий между реактивными и мутабельными данными.
Изменение state приводит к ререндеру компонента, а изменение ref — нет. state используется для данных, которые влияют на отображение UI. ref нужен для хранения мутабельных значений, которые должны сохраняться между рендерами, но не участвуют в отрисовке. React не отслеживает изменения ref.current.
state — реактивное состояние компонента, изменение которого инициирует ререндер
ref — контейнер для мутабельного значения, изменение которого не влияет на рендер
stateВызывается setState / setX
React планирует ререндер
Компонент перерисовывается с новым состоянием
Пример:
const [count, setCount] = useState(0);
setCount(count + 1); // вызывает ререндер
refconst countRef = useRef(0);
countRef.current += 1; // рендера не будет
state
данные для UI
результат запроса
флаги отображения
ref
таймеры
предыдущие значения
ссылки на DOM
счётчики без UI
Если данные должны влиять на интерфейс — используй state. Если нужно сохранить значение между рендерами без перерисовки — ref.