Skip to content

Instantly share code, notes, and snippets.

@satyam4p
Created August 6, 2024 15:44
Show Gist options
  • Save satyam4p/406f01403f24a04d7d75a906d96d0310 to your computer and use it in GitHub Desktop.
Save satyam4p/406f01403f24a04d7d75a906d96d0310 to your computer and use it in GitHub Desktop.
provide hook for handling screen size
import { useEffect, useState } from "react";
import useDebounceHook from "./useDebounceHook";
const useResponsive = () => {
const debounce = useDebounceHook(onResizeHandler, 500, false);
const [state, setState] = useState({
isMobile: false,
isTablet: false,
isDesktop: false,
});
useEffect(() => {
setUp();
return () => {
cleanup();
};
}, []);
const setUp = () => {
window.addEventListener("resize", debounce, false);
};
const cleanup = () => {
window.removeEventListener("resize", debounce, false);
};
const onResizeHandler = () => {
const isMobile = window.innerWidth < 768;
const isTablet = window.innerWidth > 768 && window.innerWidth <= 900;
const isDesktop = window.innerWidth > 900;
setState({
isMobile,
isTablet,
isDesktop,
});
};
return state;
};
export default useResponsive;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment