React Dojo

Buscar

Busca conceptos, ejercicios y quizzes

dom

useResizeObserver

Observa cambios de tamaño en un elemento específico usando ResizeObserver. Devuelve una ref, el ancho y el alto actuales del elemento.


useResizeObserver.ts
import { useState, useEffect, useRef } from "react"

interface Size {
  width: number
  height: number
}

export function useResizeObserver<T extends HTMLElement>() {
  const ref = useRef<T>(null)
  const [size, setSize] = useState<Size>({ width: 0, height: 0 })

  useEffect(() => {
    const el = ref.current
    if (!el) return
    const observer = new ResizeObserver(([entry]) => {
      const { width, height } = entry.contentRect
      setSize({ width, height })
    })
    observer.observe(el)
    return () => observer.disconnect()
  }, [])

  return { ref, width: size.width, height: size.height }
}
¿Fue útil?
Inicia sesión para dar feedback