В текущем обработчике reels остаётся снимком предыдущего render. Вычисляйте выигрыш из next или выводите его из актуального состояния при рендере.
Почему проверка выигрыша читает старое состояние React
В текущем обработчике 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 завершения рендера.