UNPKG

react-hooks-and-com

Version:

一个现代化的 React 自定义 Hooks 库,提供 20+ 个实用的自定义 Hooks。使用 TypeScript 和 Tailwind CSS 构建,完全类型安全。

74 lines 2.21 kB
import { RefObject } from 'react'; export interface ElementSize { /** 元素宽度 */ width: number; /** 元素高度 */ height: number; /** 元素内容宽度 */ contentWidth: number; /** 元素内容高度 */ contentHeight: number; /** 元素边框宽度 */ borderWidth: number; /** 元素边框高度 */ borderHeight: number; /** 元素内边距宽度 */ paddingWidth: number; /** 元素内边距高度 */ paddingHeight: number; } export interface UseElementSizeOptions { /** 是否启用尺寸监听 */ enabled?: boolean; /** 是否包含边框 */ includeBorder?: boolean; /** 是否包含内边距 */ includePadding?: boolean; /** 尺寸变化时的回调 */ onSizeChange?: (size: ElementSize) => void; /** 防抖延迟(毫秒) */ debounceMs?: number; } export interface UseElementSizeReturn<T extends HTMLElement = HTMLElement> { /** 要监听的元素引用 */ ref: RefObject<T | null>; /** 元素尺寸信息 */ size: ElementSize; /** 是否正在监听 */ isObserving: boolean; /** 开始监听 */ startObserving: () => void; /** 停止监听 */ stopObserving: () => void; /** 手动更新尺寸 */ updateSize: () => void; } /** * 元素尺寸监听 Hook * 用于获取和监听元素的尺寸变化 * * @template T - 元素类型 * @param options 配置选项 * @returns 返回元素引用和尺寸信息 * * @example * ```tsx * const { ref, size, isObserving, startObserving, stopObserving } = useElementSize({ * includeBorder: true, * includePadding: true, * onSizeChange: (size) => console.log('尺寸变化:', size), * debounceMs: 100 * }); * * return ( * <div ref={ref} className="w-64 h-48 border p-4"> * <p>宽度: {size.width}px</p> * <p>高度: {size.height}px</p> * <button onClick={startObserving}>开始监听</button> * <button onClick={stopObserving}>停止监听</button> * </div> * ); * ``` */ export declare const useElementSize: <T extends HTMLElement = HTMLElement>(options?: UseElementSizeOptions) => UseElementSizeReturn<T>; //# sourceMappingURL=useElementSize.d.ts.map