less than 1 minute read


import { useState, useEffect } from "react";

interface WindowSizeObj {
  windowWidth: number;
  windowHeight: number;
}

export const useWindowSize = (): WindowSizeObj => {
  const [windowSize, setWindowSize] = useState<WindowSizeObj>({
    windowWidth: window.innerWidth,
    windowHeight: window.innerHeight,
  });

  useEffect(() => {
    function handleResize() {
      setWindowSize({
        windowWidth: window.innerWidth,
        windowHeight: window.innerHeight,
      });
    }
    window.addEventListener("resize", handleResize);
    handleResize();
    return () => window.removeEventListener("resize", handleResize);
  }, []);

  return windowSize;
};

Leave a comment