soda-material
Version:
A React(>=18) component library that may follow [Material Design 3](https://m3.material.io/components) (a.k.a. Material You)
27 lines (20 loc) • 597 B
text/typescript
import { useEffect, useState } from 'react'
/**
* For pratical, this hook only intend for one element
* @returns ResizeObserverEntry
*/
export function useResizeObserver(
elementRef: React.RefObject<HTMLElement>,
options?: ResizeObserverOptions
) {
const [entry, setEntry] = useState<ResizeObserverEntry>()
useEffect(() => {
const ro = new ResizeObserver((entries) => {
setEntry(entries[0])
})
const element = elementRef.current!
ro.observe(element, options)
return () => ro.unobserve(element)
})
return entry
}