Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

312
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!