30 lines
686 B
JavaScript
30 lines
686 B
JavaScript
import { useState, useEffect } from "react";
|
|
import { useDebouncedCallback } from "./DebouncedCallback";
|
|
|
|
function useWindowSize() {
|
|
const [windowSize, setWindowSize] = useState({
|
|
w: window.innerWidth,
|
|
h: window.innerHeight,
|
|
});
|
|
|
|
const debounceWindowResize = useDebouncedCallback(() => {
|
|
setWindowSize({
|
|
w: window.innerWidth,
|
|
h: window.innerHeight,
|
|
});
|
|
}, 200);
|
|
|
|
useEffect(() => {
|
|
debounceWindowResize();
|
|
|
|
window.addEventListener("resize", debounceWindowResize);
|
|
return () => {
|
|
window.removeEventListener("resize", debounceWindowResize);
|
|
};
|
|
}, [debounceWindowResize]);
|
|
|
|
return windowSize;
|
|
}
|
|
|
|
export default useWindowSize;
|