Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про React: setstate, updater

Чем отличается передача значения и callback в setState?

Вопрос проверяет понимание асинхронности обновлений состояния и проблемы устаревших значений.

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

Передача значения в setState напрямую подставляет новое состояние, а callback (функция-обновитель) вычисляет его на основе предыдущего. Callback гарантирует корректность при нескольких обновлениях подряд. Это особенно важно при асинхронных событиях и батчинге обновлений. В React hooks callback — это предпочтительный способ при зависимостях от старого состояния.

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

Хотя оба варианта обновляют состояние, они ведут себя по-разному в сложных сценариях.

Определение

Callback в setState — функция, которая получает предыдущее состояние и возвращает новое.

Передача значения

setCount(count + 1);

Проблема

  1. count может быть устаревшим.

  2. Несколько вызовов могут быть объединены.

Callback-вариант

setCount(prev => prev + 1);

Преимущества

  1. Всегда актуальное состояние.

  2. Безопасно при батчинге.

  3. Работает корректно в асинхронных колбэках.

Когда использовать callback

  1. Новое состояние зависит от предыдущего.

  2. Несколько обновлений подряд.

  3. Асинхронные события (таймеры, промисы).

Вывод

Если новое состояние зависит от старого — всегда используй callback-форму setState, она надёжнее и предсказуемее.

Уровень

  • Рейтинг:

    5

  • Сложность:

    5

Навыки

  • React

    React

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

#setstate

#updater

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