Files
deerflow-code/web-code/hooks/useWindowSize.ts
T
2026-05-28 18:29:37 +08:00

32 lines
713 B
TypeScript

import { useState, useEffect, useCallback } from 'react';
interface WindowSize {
width: number;
height: number;
}
export function useWindowSize() {
const [windowSize, setWindowSize] = useState<WindowSize>({
width: window.innerWidth,
height: window.innerHeight,
});
const handleResize = useCallback(() => {
setWindowSize({
width: window.innerWidth,
height: window.innerHeight,
});
}, []);
useEffect(() => {
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, [handleResize]);
return windowSize;
}
export function useIsMobile() {
const { width } = useWindowSize();
return width < 768;
}