A React hook for measuring the size of HTML elements including when they change
npm install @react-hook/sizenpm i @react-hook/size
A React hook for measuring the size of HTML elements including when they change
- [x] Determines the size of the element including any padding, borders, and scroll bars.
- [x] The size reported by the hook updates each time the size of the element changes.
- [x] Uses a single ResizeObserver for tracking all elements used by the hooks.
This approach is astoundingly more performant
than using a ResizeObserver per element which most hook implementations do.
- [x] Uses @juggle/resize-observer as a ponyfill when ResizeObserver isn't supported
by the current browser.
- [x] Automatically unobserves the target element when the hook unmounts.
Check out an example on CodeSandbox
``jsx harmony
import * as React from 'react'
import useSize from '@react-hook/size'
const Component = () => {
const target = React.useRef(null)
const [width, height] = useSize(target)
return (
API
$3
| Argument | Type | Required? | Description |
| -------- | ---------------------------------------------------- | --------- | --------------------------------------------------------- |
| target | React.RefObject | T | null | Yes | A React ref created by
useRef() or an HTML element |
| options | UseSizeOptions | No | Options for SSR. See UseSizeOptions. |$3
`ts
export interface UseSizeOptions {
// The initial width to set into state.
// This is useful for SSR environments.
initialWidth: 0
// The initial height to set into state.
// This is useful for SSR environments.
initialHeight: 0
}
``MIT