useWindowSize

1 import React, { useState, useEffect } from 'react'
2
3 type WindowSize = {
4 height: number;
5 width: number;
6 }
7
8 export const useWindowSize = (): WindowSize => {
9 const [windowSize, setWindowSize] = useState({
10 width: 0,
11 height: 0,
12 });
13
14 useEffect(() => {
15 if (typeof window !== "undefined") {
16 const handleResize = () => {
17 setWindowSize({
18 width: window.innerWidth,
19 height: window.innerHeight,
20 });
21 };
22
23 window.addEventListener('resize', handleResize);
24 handleResize();
25
26 return () => window.removeEventListener("resize", handleResize);
27 }
28 }, []);
29 return windowSize;
30 }
31
32 export default WindowSize;
33