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

255
Visualizações
Diálogo dentro de Popover en React HeadlessUI

Tengo una barra de navegación que usa Popover de HeadlessUI en dispositivos móviles para el menú de hamburguesas. De forma predeterminada, este menú se cierra cuando hace clic fuera/se enfoca en un elemento que no está en él.

Ahora estoy tratando de agregar un modal (HeadlessUI Dialog ) que quiero abrir al hacer clic en un botón que está en el menú emergente. El modal se usa dentro de una definición de componente ModalButton ( <><button><dialog></> ). Esto se hace por separación de preocupaciones (todo lo relacionado con el modal está dentro de ModalButton ).

El problema es: cuando estoy en el menú emergente de la barra de navegación y hago clic en el botón para abrir el cuadro de diálogo. El navegador se centra en este nuevo cuadro de diálogo, por lo que la ventana emergente pierde el foco y se cierra. Desde que se cerró, el botón (y, por lo tanto, el hermano del diálogo) ya no se representan, por lo que el diálogo desaparece instantáneamente.

Como referencia, este es un pseudocódigo del árbol de reacción:

 <navbar> <popover> <> {/* "ModalButton" containing both the button and the dialog */} <button /> {/* Button that opens the dialog */} <dialog /> {/* This uses a portal internally (with HeadlessUI) */} </> </popover> </navbar>

Puedo pensar en algunas formas de resolver esto, pero ninguna es muy buena:

  1. Tire del modal hacia arriba en el árbol, fuera del menú emergente/hamburguesa pero aún dentro de la barra de navegación. Pero eso rompe la separación de preocupaciones ya que la barra de navegación ahora tiene que preocuparse por el estado abierto del modal.
  2. Coloque el modal en algún lugar en la parte superior del árbol y use algún tipo de estado global (requiere una biblioteca de administración de estado) para manejar la apertura del modal.
  3. ¿Tal vez hay una manera de evitar que Popover se cierre cuando se enfoca en el diálogo? (pero aún permita que se cierre al enfocar cualquier cosa que no sea el diálogo)

Me encantaría escuchar alguna idea para solucionar este problema.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debería colocar el cuadro de diálogo más arriba en el árbol. Por lo general, estos pueden ir al nivel de la página, o incluso al nivel de la aplicación, según cuán globales sean estos cuadros de diálogo.

Luego puede usar su administrador de estado global favorito o el useContext para indicar a estos cuadros de diálogo que se abran mediante programación desde cualquier lugar de su aplicación.

En cuyo caso, el cierre automático del popover ya no debería ser un problema.

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