@figliolia/react-hooks
Version:
A small collection of simple React Hooks you're probably rewriting on a regular basis
26 lines (24 loc) • 615 B
text/typescript
import type { RefObject } from "react";
import { useMemo, useState } from "react";
import {
type Dimensions,
type Options,
useSizeObserver,
} from "@figliolia/size-observer";
export const useNodeDimensions = <T extends HTMLElement>(): [
ref: RefObject<T>,
dimensions: Dimensions | undefined,
] => {
const [dimensions, onChange] = useState<Dimensions | undefined>(undefined);
const options: Options = useMemo(
() => ({
onChange,
width: true,
height: true,
type: "border-box",
}),
[],
);
const node = useSizeObserver<T>(options);
return [node, dimensions];
};