use-breakpoints.ts 658 B

123456789101112131415161718192021222324252627
  1. 'use client'
  2. import React from 'react'
  3. export enum MediaType {
  4. mobile = 'mobile',
  5. tablet = 'tablet',
  6. pc = 'pc',
  7. }
  8. const useBreakpoints = () => {
  9. const [width, setWidth] = React.useState(globalThis.innerWidth);
  10. const media = (() => {
  11. if (width <= 640) return MediaType.mobile;
  12. if (width <= 768) return MediaType.tablet;
  13. return MediaType.pc;
  14. })();
  15. React.useEffect(() => {
  16. const handleWindowResize = () => setWidth(window.innerWidth);
  17. window.addEventListener("resize", handleWindowResize);
  18. return () => window.removeEventListener("resize", handleWindowResize);
  19. }, []);
  20. return media;
  21. }
  22. export default useBreakpoints