Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

139
Vistas
¿Hacer que una aplicación React escuche la entrada del teclado y llame a una función que tenga acceso al estado?

Nuevo en Reaccionar.

Estoy tratando de hacer que mi aplicación esté lista para responder a las entradas del teclado (es decir, los botones de flecha) desde el principio mediante la configuración de un eventListener. El problema parece ser que no sé la forma correcta de agregar ese eventListener para que la función llamada pueda acceder al estado del componente.

Aquí está mi función

 handleKeyUp(event) { let retRow = this.state.retRow; let retCol = this.state.retCol; switch(event.key) { case 'ArrowUp': retRow += -1; break; case 'ArrowDown': retRow += 1; break; case 'ArrowLeft': retCol += -1; break; case 'ArrowRight': retCol += 1; break; default: } this.setState({retRow, retCol}); }

Intenté ponerlo en el div más externo de lo que se representa, pero this parece estar indefinido si lo hago.

 render() { /*...*/ return ( <div onKeyUp={this.handleKeyUp}> <h1>{headerText}</h1> {this.renderBoard(this.state.rowCount,this.state.colCount)} <button onClick={() => this.resetGame()}>Restart</button> </div> ); }

Y traté de ponerlo en el documento cuando se monta el componente, pero eso hace que this se refiera al document

 componentDidMount() { document.addEventListener('keyup', this.handleKeyUp); } componentWillUnmount() { document.removeEventListener('keyup', this.handleKeyUp); }

}

De cualquier manera, this es incorrecto para mí para poder acceder al estado del componente con this.state . ¿Cómo puedo hacer que mi componente responda a las entradas del teclado como quiero?

about 4 years ago · Santiago Gelvez
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda