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

289
Vistas
¿Por qué la función onload se llama dos veces, aunque el componente se representa una vez?

Tengo un componente de reacción simple, el fuego se imprime una vez, pero injectWindowInterval se llama dos veces al evento aunque estoy configurando el valor de la bandera, ¿por qué es así?

 const Header = () => { let flag = true; console.log("fire"); function injectWindowInterval() { if (flag && window.google) { flag = false; console.log(window.google); } } const script = document.createElement("script"); script.src = "https://accounts.google.com/gsi/client"; script.onload = injectWindowInterval; script.async = true; document.querySelector("body")?.appendChild(script); return ( <div className="header"> <h3 className="header__title">RE</h3> </div> ); };

Actualización: por alguna razón, el script se agrega dos veces en el cuerpo.

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

0

En algunos casos, se llama a la función en render cuando se definen. Un ejemplo común es con métodos onClick para botones

 <button onClick={onClickFunction}>Click me</button> //fires on render <button onClick={()=>onClickFunction()}>Click me</button> //no fire on render, works well

Así que tal vez intente

 const Header = () => { let flag = true; console.log("fire"); const script = document.createElement("script"); script.src = "https://accounts.google.com/gsi/client"; script.onload = () => { if (flag && window.google) { flag = false; console.log(window.google); } }; script.async = true; document.querySelector("body")?.appendChild(script); return ( <div className="header"> <h3 className="header__title">RE</h3> </div> ); };
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si está renderizando el componente en <React.StrictMode>, el componente se renderizará dos veces con seguridad en el modo de desarrollo. Intenté representar el componente anterior (Encabezado) y el incendio se registra en la consola dos veces, así que agregue la etiqueta del script dos veces. Aquí está la salida de la consola

Nota: también tenga en cuenta que React renderiza el componente dos veces solo en el modo de desarrollo. Una vez que construyas la aplicación, el componente se renderizará solo una vez.

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