@modern-kit/react
Version:
30 lines (28 loc) • 1.22 kB
TypeScript
interface UseResizeObserver<T extends HTMLElement> {
ref: React.RefObject<T>;
contentRect: ContentRect;
}
type ContentRect = Omit<DOMRectReadOnly, 'toJSON'>;
/**
* @description 지정된 타겟 요소의 크기 변화를 감지하는 React 커스텀 훅입니다.
* 이 훅은 `ResizeObserver` API를 사용하여 요소의 크기가 변경될 때마다 특정 액션을 호출 할 수 있습니다.
*
* @template T - 관찰하려는 타겟 요소의 타입
* @param {((entry: ResizeObserverEntry) => void) | undefined} [action] - 요소의 크기가 변경될 때마다 호출되는 콜백 함수. `ResizeObserverEntry` 객체를 인자로 받습니다.
*
* @returns {UseResizeObserver<T>} 타겟 요소에 대한 참조 객체(`ref`)와 해당 요소의 현재 크기 정보(`contentRect`)입니다.
*
* @example
* ```tsx
* const { ref, contentRect } = useResizeObserver<HTMLDivElement>();
*
* return (
* <div ref={ref}>
* <p>Width: {contentRect.width}</p>
* <p>Height: {contentRect.height}</p>
* </div>
* );
* ```
*/
declare function useResizeObserver<T extends HTMLElement>(action?: (entry: ResizeObserverEntry) => void): UseResizeObserver<T>;
export { useResizeObserver };