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

131
Vistas
Reaccionar: elementos de navegación usando el detector de eventos window.onClick

Estaba creando una ventana de inicio de sesión emergente para mi proyecto de reacción y quería mostrarla cuando presiono el botón de inicio de sesión y cerrar cuando hago clic fuera del contenedor. El área exterior es en realidad un div principal que funciona como una superposición borrosa para su elemento secundario. Utilicé useState para controlar los valores booleanos y useRef hooks para controlar las propiedades de visualización como se muestra a continuación.

 <overlay onClick={()=>setPopupActive(false)}> <popup-window ref={displayPopupRef}>...some codes...</popup-window>..it only displays when the state is true </overlay>

Dado que uso useState en el elemento principal, también afecta al elemento secundario, que es la ventana emergente y la cierra cada vez que hago clic en el elemento secundario. Intenté poner stopPropagation en el elemento secundario, pero impide algunos de mis enlaces, que forman parte del componente principal.

Como no encuentro una cura para este problema, utilizo otro enfoque que consiste en usar el detector de eventos window.onClick... vea el código a continuación

 useEffect(() => { window.onclick = (e) => { if (e.target.className === 'login-btn') return displayPopupRef.current.style.display = 'grid' if(['login-container-overlay','close-button'].includes(e.target.className)) return displayPopupRef.current.style.display = 'none' } }, [displayPopupRef])

y funciona perfectamente bien. También utilizo el mismo enfoque en la barra de búsqueda y todo parece estar bien y la consola está limpia...

Debido a que soy un programador principiante, sigo preguntándome si es la forma correcta de hacerlo y si hay algún problema al usar el evento window.onclick en tales ocasiones.

about 4 years ago · Juan Pablo Isaza
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