@pbr1111/use-resize-observer
v1.1.4
Published
useResizeObserver hook
Downloads
556
Maintainers
Readme
use-resize-observer
React hook implementation of ResizeObserver to measure the size of an element.
Features
- Uses RefCallback to react to nodes that change their reference (like conditional nodes).
- Provides useDebounceResizeObserver and useThrottleResizeObserver hooks for an optimized debouncing and throttling exprience, avoiding unnecessary rerenders.
- Written in TypeScript. The declaration files (.d.ts) are included in the package.
Installation
With yarn:
yarn add @pbr1111/use-resize-observer
With npm:
npm install @pbr1111/use-resize-observer
Usage
All hooks return the same object:
| Property | Description |
| -------- | --------------------------------------------------------------------------------- |
| ref
| RefCallback ref
to be observed |
| width
| Element width. It will be undefined until the size of the element is calculated. |
| height
| Element height. It will be undefined until the size of the element is calculated. |
useResizeObserver
Parameters
This hook has no input parameters.
Example
import React from 'react';
import { useResizeObserver } from '@pbr1111/use-resize-observer';
const App = () => {
const { ref, width, height } = useResizeObserver<HTMLDivElement>();
return (
<div ref={ref}>
<div>Width: {width}px</div>
<div>Height: {height}px</div>
</div>
);
};
useDebounceResizeObserver
Parameters
| Parameter | Required | Description |
| --------- | -------- | --------------------------- |
| delayMs
| Yes | Delay time in milliseconds. |
Example
import React from 'react';
import { useDebounceResizeObserver } from '@pbr1111/use-resize-observer';
const App = () => {
const { ref, width, height } = useDebounceResizeObserver<HTMLDivElement>(
500
);
return (
<div ref={ref}>
<div>Width: {width}px</div>
<div>Height: {height}px</div>
</div>
);
};
useThrottleResizeObserver
Parameters
| Parameter | Required | Description |
| --------- | -------- | --------------------------- |
| delayMs
| Yes | Delay time in milliseconds. |
Example
import React from 'react';
import { useThrottleResizeObserver } from '@pbr1111/use-resize-observer';
const App = () => {
const { ref, width, height } = useThrottleResizeObserver<HTMLDivElement>(
500
);
return (
<div ref={ref}>
<div>Width: {width}px</div>
<div>Height: {height}px</div>
</div>
);
};