Почему проверка выигрыша читает старое состояние React

В текущем обработчике reels остаётся снимком предыдущего render. Вычисляйте выигрыш из next или выводите его из актуального состояния при рендере.

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

Что ответить на собеседовании

В текущем обработчике reels остаётся снимком предыдущего render. Вычисляйте выигрыш из next или выводите его из актуального состояния при рендере.

Подробный разбор

Ответ с пояснениями

Условие

Обработчик получает новые значения барабанов next, вызывает setReels(next), затем сравнивает элементы reels из текущего render. Иногда выигрыш не соответствует экрану. Как исправить?

Ответ

В текущем обработчике reels остаётся снимком предыдущего render. Вычисляйте выигрыш из next или выводите его из актуального состояния при рендере.

Для трёх барабанов: const won = next.length === 3 && next.every(value => value === next[0]). Затем сохраните согласованный результат либо храните только reels и вычисляйте won из него. Если ответы нескольких запусков могут приходить не по порядку, добавьте идентификатор запуска. Ожидание setState через await не превращает его в Promise завершения рендера.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее