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

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

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

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 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