20 lines
		
	
	
		
			565 B
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			565 B
		
	
	
	
		
			TypeScript
		
	
	
	
import * as React from "react"
 | 
						|
 | 
						|
const MOBILE_BREAKPOINT = 768
 | 
						|
 | 
						|
export function useIsMobile() {
 | 
						|
  const [isMobile, setIsMobile] = React.useState<boolean | undefined>(undefined)
 | 
						|
 | 
						|
  React.useEffect(() => {
 | 
						|
    const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)
 | 
						|
    const onChange = () => {
 | 
						|
      setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
 | 
						|
    }
 | 
						|
    mql.addEventListener("change", onChange)
 | 
						|
    setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)
 | 
						|
    return () => mql.removeEventListener("change", onChange)
 | 
						|
  }, [])
 | 
						|
 | 
						|
  return !!isMobile
 | 
						|
}
 |