import { useEffect, useState } from 'react'; import { debounce } from 'lodash'; const useWindowSize = () => { const [state, setState] = useState<{ width: number; height: number }>({ width: window.innerWidth, height: window.innerHeight }); useEffect((): (() => void) | void => { const handler = () => { setState({ width: window.innerWidth, height: window.innerHeight }); }; const resize = debounce(handler, 1000); window.addEventListener('resize', resize); return () => { window.removeEventListener('resize', resize); }; }, []); return state; }; export default useWindowSize;