Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: React, useCallback, dependencies, memoization, hooks

Какие зависимости нужно указывать в useCallback?

Вопрос проверяет понимание работы хука useCallback в React и правил указания массива зависимостей для мемоизации функций.

Короткий ответ

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

Длинный ответ

Что такое useCallback и зачем нужны зависимости

useCallback — это хук React, который возвращает мемоизированную версию колбэка. Он предотвращает создание новой функции при каждом рендере, если зависимости не изменились. Массив зависимостей — второй аргумент хука — определяет, когда колбэк должен быть пересоздан.

Какие зависимости указывать

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

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

function Counter() {
  const [count, setCount] = useState(0);
  const [step, setStep] = useState(1);

  // Правильно: step указан в зависимостях
  const increment = useCallback(() => {
    setCount(prev => prev + step);
  }, [step]);

  // Неправильно: step не указан, будет использоваться старое значение
  const badIncrement = useCallback(() => {
    setCount(prev => prev + step);
  }, []);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={increment}>Increment</button>
    </div>
  );
}

Правила и рекомендации

  • Всегда указывайте все переменные, используемые внутри колбэка
  • Если колбэк использует только функции-сеттеры из useState, зависимости можно опустить, так как они стабильны
  • Используйте eslint-plugin-react-hooks для автоматической проверки зависимостей
  • Не указывайте в зависимостях функции, которые сами мемоизированы через useCallback или useMemo

Вывод

Правильное указание зависимостей в useCallback критически важно для корректной работы приложения. Ошибки в зависимостях приводят к багам с устаревшими данными и неожиданным поведением. Всегда следуйте правилу: указывайте все переменные из внешнего скоупа, которые использует колбэк, и используйте линтер для автоматической проверки.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • React

    React

Ключевые слова

#React

#useCallback

#dependencies

#memoization

#hooks

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию