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

110
Vistas
scrollheight no se calcula correctamente hasta el tercer renderizado

Estoy creando un componente funcional de desplazamiento infinito personalizado en reaccionar, que puede ir en ambas direcciones, y tengo algunos problemas porque necesito calcular scrollHeight y scrollWidth después de cargar los primeros elementos, que debería ser después del primer render.

Sin embargo, en lugar de obtener el valor correcto, obtengo clientHeight aunque la pantalla muestra una barra de desplazamiento y que el tamaño del primer elemento secundario está mucho más allá de clientHeight , hasta el tercer procesamiento o la segunda llamada de efecto.

Aquí está el código que muestra el problema sin la lógica innecesaria, el efecto de diseño no registra el valor completo hasta que se ejecuta por segunda vez:

 function InfiniteScroll({ children }) { const ref = useRef() console.log('render', ref?.current?.scrollHeight, children?.length) useLayoutEffect(() => { console.log('layout effect', ref?.current?.scrollHeight, children?.length) }) return ( <div ref={ref}> { children } </div> }

¿Hay alguna manera de obtener el valor total en la primera ejecución? Supongo que tiene que ver con hacer que los niños rendericen primero para obtener el ancho real. Si ese es el caso, ¿hay alguna forma de ejecutar un gancho useEffect después de que todo se haya renderizado?

about 4 years ago · Juan Pablo Isaza
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