| 1234567891011121314151617181920212223242526 |
- import { useState, useEffect } from 'react';
- const MOBILE_BREAKPOINT = 768;
- export function useIsMobile(): boolean {
- const [isMobile, setIsMobile] = useState(() =>
- typeof window !== 'undefined' ? window.innerWidth < MOBILE_BREAKPOINT : false
- );
- useEffect(() => {
- const mediaQuery = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
- const handleChange = (e: MediaQueryListEvent) => {
- setIsMobile(e.matches);
- };
- // Set initial value
- setIsMobile(mediaQuery.matches);
- // Modern browsers support addEventListener
- mediaQuery.addEventListener('change', handleChange);
- return () => mediaQuery.removeEventListener('change', handleChange);
- }, []);
- return isMobile;
- }
|