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

192
Vistas
Pasar el elemento HTML al componente React antes de que se represente el elemento

Si tenemos el componente Foo de React que instancia la clase Bar y necesitamos pasar el elemento HTMLCollection con ID foo a Bar , ¿cómo se puede hacer?

Idealmente, Bar.js debería permanecer sin cambios.

Intenté lo siguiente:

Foo.js

 import Bar from './Bar'; const Foo = () => { const elem = document.getElementById('foo'); const bar = new Bar(elem, {}); return ( <div id="foo"> </div> ); }; export default Foo;

Bar.js

 export default class Bar { constructor(domElement, config = {}) { console.log(domElement); // null console.log(domElement.getElementsByClassName('bar')); // null } }

pero domElement siempre es null , tal vez porque cuando ejecutamos document.getElementById , el elemento div#foo aún no se ha representado.


También probé el uso useRef :

Foo.js

 import { useRef } from 'react'; import Bar from './Bar'; const Foo = () => { const elemRef = useRef(null); const bar = new Bar(elemRef, {}); return ( <div id="foo" ref={elemRef}> </div> ); }; export default Foo;

Bar.js

 export default class Bar { constructor(domElement, config = {}) { console.log(domElement); // {current: null} console.log(domElement.getElementsByClassName('bar')); // Uncaught TypeError: domElement.getElementsByClassName is not a function } }

pero obteniendo el error

TypeError no detectado: domElement.getElementsByClassName no es una función

¿Cuál es la forma correcta de hacer esto?

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

0

Puede usar el gancho useLayoutEffect que se dispara sincrónicamente después de todas las mutaciones DOM

 useLayoutEffect(() => { const elem = document.getElementById("foo"); const bar = new Bar(elem, {}); }, []);
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