Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

136
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda