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

698
Vistas
How to get HTML element width dynamically in React.js?

I would like to dynamically get the div element's width. With useRef I can get the width of my div, but when I resize my page, the width value doesn't update automatically. Can you tell me what I need to do to make this happen?

Here's my code I put into Codesandbox.io, and an overview here:

import React from "react";
import "./styles.css";

const App = () => {
  const ref = React.useRef(null);
  const [width, setWidth] = React.useState(0);

  React.useEffect(() => {
    setWidth(ref.current.offsetWidth);
  }, [width]);

  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <div
        style={{
          border: "1px solid red"
        }}
        ref={ref}
      >
        Width: {width}
      </div>
    </div>
  );
};

export default App;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Change your useEffect as below so you add an event listener for when you resize the page. Updated Codesandbox here. Also notice I removed width state from the dependency array.

React.useEffect(() => {
    // when the component gets mounted
    setWidth(ref.current.offsetWidth); 
    // to handle page resize
    const getwidth = ()=>{
      setWidth(ref.current.offsetWidth);
    }
    window.addEventListener("resize", getwidth);
    // remove the event listener before the component gets unmounted
    return ()=>window.removeEventListener("resize", getwidth)
  }, []);
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