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

300
Vistas
¿Cómo puedo "asignar" las teclas de flecha arriba/abajo a Tab/Shift Tab?

Para mi aplicación React, todo lo que quiero hacer es tomar la funcionalidad actual de Tab y Shift Tab, pero hacer que las flechas arriba/abajo hagan lo mismo.

Sé que puedes emular este comportamiento con Reacts "useRef" y "focus", pero mi aplicación tendrá elementos renderizados dinámicamente que siempre están cambiando.

Estoy trabajando con un componente recursivo que llena un árbol recursivo según la entrada de los usuarios. También planeo permitir que el orden de los nodos secundarios se pueda ordenar (por varios campos y orden de clasificación).

Por lo tanto, no hay una manera (fácil) de saber qué "ref" sería el elemento anterior/siguiente. Esto hace que "ref.current.focus()" sea prácticamente inutilizable.

Pero una vez que se renderiza el Dom, Tab y Shift Tab funcionan exactamente como yo quiero...

... Solo quiero que las teclas de flecha arriba/abajo hagan esto en su lugar (es decir, la flecha hacia arriba haría la acción de tabulación Shift y la flecha hacia abajo haría la acción de tabulación).

¿Hay alguna forma de enviar programáticamente una pulsación de tecla Tab/Shift Tab en una aplicación React?

¿O tal vez de alguna manera cambiar el enfoque al "hermano" anterior/siguiente después de que se construya el DOM (es decir, ref.current.nextSibling.focus())?

Parece que no puedo hacer que ninguno de estos enfoques funcione.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

puedes escuchar la pulsación de tecla en componentDidMount()

 componentDidMount(){ document.addEventListener("keydown", this.handleKeyDown); }

Y su handleKeyDown será;

 handleKeyDown(e) { e.preventDefault(); if(e.keyCode == 38){ //up arrow e.dispatchEvent(new Event('keypress', {keyCode: 9})) } }
about 4 years ago · Juan Pablo Isaza Denunciar
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