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

225
Vistas
reaccionar: agregue un componente después de que se haya cargado el componente principal

Tengo un componente de reacción funcional como este:

 function ComponentA(){ function AddComponentB(){ return <><ComponentB /></> } useEffect(() => { AddComponentB(); }, []); return <> <div id="parent"></div> </> }

Ahora he entendido que todo bajo useEffect se carga una vez que se carga el ComponentA . Quiero agregar el ComponentB a div con id parent . Por favor, ayúdame a entender cómo especifico dónde agregar el componente.

PD Sé que puedo hacerlo mediante document.getElementById("parent").append(ComponentB) pero estoy buscando otras formas.

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

0

No, no manipulas el DOM directamente cuando usas React.

Debe tener una "bandera" que dicte si desea renderizar el componente adicional o no.

Algo como

 function ComponentA(){ const [renderComponentB, setRenderComponentB] = useState(false); useEffect(() => { setRenderComponentB(true); }, []); return ( <> <div id="parent"> {renderComponentB && <ComponentB/>} </div> </> ); }

Aunque no estoy seguro de por qué desea retrasar el ComponentB por solo un ciclo de renderizado.


En cuanto al getBoundingClientRect de ComponentA , no existe tal cosa, ya que eso depende de lo que el componente represente realmente en el DOM. ComponentA en sí mismo no es parte del DOM.

En su caso específico, aunque podría agregar una ref al elemento #parent y usarlo para getBoundingClientRect , ya que es su elemento "contenedor" del ComponentA

function ComponentA(){ const [renderComponentB, setRenderComponentB] = useState(false); const parentRef = useRef();

 useEffect(() => { setRenderComponentB(true); }, []); useLayoutEffect(() => { const rect = parentRef.current.getBoundingClientRect(); // do what you want with the rect here // if you want to apply values to the ComponentB // add them to a state variable and use those when // rendering the ComponentB }, []) return ( <> <div id="parent" ref={parentRef}> {renderComponentB && <ComponentB/>} </div> </> ); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Intente usar conditional rendering , como a continuación:

 export default function ComponentA() { const [renderComponentB, setRenderComponentB] = useState(false) useEffect(() => { setRenderComponentB(true); }, []); return(<div id="parent"> {renderComponentB && <ComponentB/>} </div>) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe llamar al método que devuelve el componente en render. No necesita useEffect como entendí de su respuesta.

 function ComponentA(){ function AddComponentB(){ return <><ComponentB /></> } return <> <div id="parent"> {AddComponentB()} </div> </> }
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