Skip to content

Instantly share code, notes, and snippets.

@garmjs
Forked from stolinski/useMeasure.js
Created July 3, 2019 11:41
Show Gist options
  • Save garmjs/17804c64d47fb9ecb7090332ad1948ec to your computer and use it in GitHub Desktop.
Save garmjs/17804c64d47fb9ecb7090332ad1948ec to your computer and use it in GitHub Desktop.
useMeasure - taken from React Spring example
import { useRef, useState, useEffect } from 'react'
import ResizeObserver from 'resize-observer-polyfill'
export default function useMeasure() {
const ref = useRef()
const [bounds, set] = useState({ left: 0, top: 0, width: 0, height: 0 })
const [ro] = useState(() => new ResizeObserver(([entry]) => set(entry.contentRect)))
useEffect(() => (ro.observe(ref.current), ro.disconnect), [])
return [{ ref }, bounds]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment