Vben
2021-02-26 fcee7d4eb71471dd40567c8d7c97302eeee80697
提交 | 用户 | age
2f6253 1 import { useDebounce } from '/@/hooks/core/useDebounce';
fcee7d 2 import { addResizeListener, removeResizeListener } from '/@/utils/event';
2f6253 3
4 interface WindowSizeOptions {
5   once?: boolean;
6   immediate?: boolean;
7 }
8
9 export function useElResize<T>(
10   el: Element | typeof window,
11   fn: Fn<T>,
12   wait = 100,
13   options?: WindowSizeOptions
14 ) {
15   let handler = () => {
16     fn();
17   };
18   const [handleSize, cancel] = useDebounce(handler, wait, options);
19   handler = wait ? handleSize : handler;
20
21   function start() {
22     addResizeListener(el, handler);
23   }
24   function stop() {
25     removeResizeListener(el, handler);
26     cancel();
27   }
28
29   return [start, stop];
30 }