Skip to content

Instantly share code, notes, and snippets.

@prmichaelsen
Created August 23, 2023 01:19
Show Gist options
  • Save prmichaelsen/bacdf37d1a60e615cd0dddcf29d61a93 to your computer and use it in GitHub Desktop.
Save prmichaelsen/bacdf37d1a60e615cd0dddcf29d61a93 to your computer and use it in GitHub Desktop.
import { useState, useEffect, useCallback } from 'react';
const getSize = () => {
return {
width: window.innerWidth,
height: window.innerHeight,
};
};
export function useResize() {
const [size, setSize] = useState(getSize());
const handleResize = useCallback(() => {
let ticking = false;
if (!ticking) {
window.requestAnimationFrame(() => {
setSize(getSize());
ticking = false;
});
ticking = true;
}
}, []);
useEffect(() => {
window.addEventListener('resize', handleResize);
return () => window.removeEventListener('resize', handleResize);
}, []);
console.log(size);
return size;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment