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

169
Views
Crear imagen y mostrar simultáneamente sus dimensiones en React

Estoy tratando de crear una imagen (basada en src ) y también mostrar sus dimensiones al mismo tiempo.

Lo intenté

 const DisplayImage = () => { const [src,setSrc]=useState(''); return ( <div> {src===''?'':<img id='my-img' src={image} alt='some text' />} {document.getElementById('my-img')?.naturalHeight} </div>); }

Por supuesto, no funciona (la imagen no existe cuando trato de encontrar su altura).

También traté de hacerlo en forma de JavaScript, creando una Image() y llamando a document.appendChild al documento, pero probablemente no sea la forma correcta de hacerlo en React.

¿Hay una mejor manera de hacerlo?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar una referencia de devolución de llamada y almacenar los valores en una variable de estado para mostrarlos más tarde usando un gancho useEffect() o similar. Por ejemplo:

 const [ imageHeight, setImageHeight ] = useState(null); const [ imageWidth, setImageWidth ] = useState(null); const [ imageSource, setImageSource ] = useState(null); const imageMeasurements = useCallback(image => { if (image !== null) { setImageWidth(image.naturalWidth); setImageHeight(image.naturalHeight); } }, [ ]); return ( <div> { imageSource !== null && ( <img ref={ imageMeasurements } src={ imageSource } alt="some text" /> )} { (imageWidth !== null && imageHeight !== null) && ( <span class="image__dimensions">{imageWidth} x {imageHeight}</span> )} </div> );
about 4 years ago · Juan Pablo Isaza Report

0

Me gustaría publicar la solución con la que terminé, porque aunque @BenM respondió perfectamente a mi pregunta, la solución no funcionó para mí para los accesorios naturalWidth/naturalHeight . Se mostraron como ceros.

Creo que el problema es que esos accesorios se completan solo después de que la imagen está completamente cargada, como se describe aquí .

Para que funcione, coloqué la lógica en onLoad , por lo que mi código se ve así:

 const [imageSource,setImageSource]=useState(''); const [ imageHeight, setImageHeight ]=useState(null); const [ imageWidth, setImageWidth ]=useState(null); const imgRef = React.createRef(); <div> { imageSource !== null && ( <img src={imageSource} alt='should be something' ref={imgRef} onLoad={() =>{ setImageHeight(imgRef.current.naturalHeight); setImageWidth(imgRef.current.naturalWidth); } } /> { imageWidth && <div className="image_dimensions"> Image size: {imageWidth} x {imageHeight} </div> }) </div>
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!