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
Reaccionar focus div después de que se haya cargado

Actualmente estoy experimentando con React, y ahora me encontré con un problema que parece que no puedo resolver.

En mi aplicación, uso una biblioteca React para manejar las teclas de acceso rápido, estas teclas de acceso rápido tienen un alcance, por lo que cuando quiero que un determinado conjunto de teclas de acceso rápido esté activo en un div, tengo que envolver ese div con una etiqueta <HotKeys> .

Tengo que alternar algunos de estos divs, así que tendré algo similar a

 isActive ? <HotKeys ...> <div ...>...</div> </HotKeys> : <div ...>...</div>

Ahora necesito encontrar una manera de enfocar el div cuando se crea. Casi todos los artículos en la web sugieren algo como esto:

 const focusRef = useRef(null); useEffect(() => { focusRef.current.focus() }) return ( isActive ? <HotKeys ...> <div ref={focusRef} tabIndex={-1} ...>...</div> </HotKeys> : <div ...>...</div> )

Probé algunas variaciones, incluido tener el nivel superior de div (sin las <HotKeys> envolviéndolas), todo fue en vano.

Cuando imprimo el objeto focusRef en el método useEffect, obtengo el resultado esperado, focusRef está correctamente configurado y actual, pero llamar al método de enfoque no funciona. En un momento intenté llamar al método de enfoque desde un botón y activarlo manualmente después de que el componente se había cargado por completo, parecía funcionar (se estaba cambiando document.activeElement ), luego, por alguna razón, dejó de funcionar nuevamente. Todo esto me lleva a creer que de alguna manera el componente no se ha cargado por completo, a pesar de llamar al gancho useEffect, que, si entiendo correctamente, se activa cuando el elemento se ha renderizado por primera vez/después de cada cambio de estado.

Realmente agradecería algo de ayuda con esto, ya que básicamente comencé a aprender React ayer.

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

0

Debe usar un useCallback , porque useRef no le notifica cuando se creó la referencia

https://reactjs.org/docs/hooks-reference.html#useref

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que lo descubrí.

Tenía razón sobre el uso de tabIndex, pero necesitaba pasarlo como una cadena como esta:

 tabIndex={"-1"}

Cuando lo carga por primera vez, un cuadro de línea punteada rodea el div que tiene la referencia adjunta. echa un vistazo a este código sandbox:

https://codesandbox.io/s/nifty-wildflower-eqjtk?file=/src/App.js

tomado de esta respuesta aceptada donde pasan en una cadena: es necesario enfocarse en div en reaccionar

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