提交 | 用户 | 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 |
} |