React-native web onkeydown несколько событий зависшее приложение - PullRequest
0 голосов
/ 10 июля 2020

Я создаю игру с использованием 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...