Я создаю игру с использованием response-native, а для веб-части я использую 'document.onkeydown', функция запускает анимацию, и при ее быстром нажатии несколько раз приложение зависает. пробовали использовать переменную isMoving как обычную и как переменную состояния, и то и другое не помогло с проблемой.
const GameContext = createContext()
const GameProvider = (props) => {
const [isMoving, setIsMoving] = useState(false)
const move = async (e) => {
const { key } = e
let message
if (isMovingKey(key) && !isMoving) {
e.preventDefault()
setIsMoving(true)
// isMoving = true
const newGame = cloneDeep(game)
newGame.board.deleteAllPrevLocations()
const { message: statusMessage } = newGame.move(key)
message = statusMessage
if (!isEqual(game.board.getPiecesLocations(), newGame.board.getPiecesLocations())) {
setGame(newGame)
setCurScore(game.score)
if (curScore > highScore) {
setHighScore(curScore)
await setHighScoreAsync(highScore)
}
}
// isMoving = false
setIsMoving(false)
}
if (message) alert(message)
}
document.onkeydown = move