Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import { debounce } from "lodash";
import { useCallback, useEffect } from "react";
type Props = {
widthThreshold: number;
overThresholdCallback: () => void;
belowThresholdCallback: () => void;
};
export const useWindowResize = ({
widthThreshold,
overThresholdCallback,
belowThresholdCallback,
}: Props) => {
const deboucnedHandleResize = useCallback(
debounce(() => {
const isBelow = window.innerWidth < widthThreshold;
if (isBelow) {
belowThresholdCallback();
} else {
overThresholdCallback();
}
}, 300),
[],
);
useEffect(() => {
window.addEventListener("resize", deboucnedHandleResize);
deboucnedHandleResize();
return () => {
window.removeEventListener("resize", deboucnedHandleResize);
};
}, []);
};
|