> Зачем в setState передавать callback вместо значения (React)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Сфера

Стек: React

> Пример ответа

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

Пример:

TYPESCRIPT
// Проблема: значение может быть устаревшим
const [count, setCount] = useState(0);
setCount(count + 1); // если вызвать дважды, count может не обновиться
// Решение: используем callback
setCount(prevCount => prevCount + 1); // всегда работает с актуальным значением

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

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью