Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

288
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!