webamp/js/hooks.ts
2019-03-13 21:28:18 -07:00

27 lines
685 B
TypeScript

import { useState, useEffect } from "react";
import * as Utils from "./utils";
interface Size {
width: number;
height: number;
}
export function useScreenSize() {
const [size, setSize] = useState<Size>(Utils.getScreenSize());
// TODO: We could subscribe to screen size changes.
return size;
}
export function useWindowSize() {
const [size, setSize] = useState<Size>(Utils.getWindowSize());
const hander = Utils.throttle(() => {
setSize(Utils.getWindowSize());
}, 100) as () => void;
useEffect(() => {
window.addEventListener("resize", hander);
return () => {
window.removeEventListener("resize", hander);
};
}, [setSize]);
return size;
}