A self hosted solution for privately rating and reviewing different sorts of media
fork

Configure Feed

Select the types of activity you want to include in your feed.

at master 34 lines 1.1 kB view raw
1import { useState, useEffect } from "react"; 2 3function useWindowSize() { 4 // Initialize state with undefined width/height so server and client renders match 5 // Learn more here: https://joshwcomeau.com/react/the-perils-of-rehydration/ 6 const [windowSize, setWindowSize] = useState({ 7 width: undefined, 8 height: undefined, 9 }); 10 11 useEffect(() => { 12 // only execute all the code below in client side 13 // Handler to call on window resize 14 function handleResize() { 15 // Set window width/height to state 16 setWindowSize({ 17 width: window.innerWidth, 18 height: window.innerHeight, 19 }); 20 } 21 22 // Add event listener 23 window.addEventListener("resize", handleResize); 24 25 // Call handler right away so state gets updated with initial window size 26 handleResize(); 27 28 // Remove event listener on cleanup 29 return () => window.removeEventListener("resize", handleResize); 30 }, []); // Empty array ensures that effect is only run on mount 31 return windowSize; 32} 33 34export default useWindowSize;