Files
mai-bot/dashboard/src/hooks/use-media-query.ts
2026-01-13 06:24:35 +08:00

36 lines
799 B
TypeScript

import { useEffect, useState } from 'react'
export function useMediaQuery(query: string): boolean {
const [matches, setMatches] = useState(() => {
if (typeof window !== 'undefined') {
return window.matchMedia(query).matches
}
return false
})
useEffect(() => {
if (typeof window === 'undefined') {
return
}
const mediaQuery = window.matchMedia(query)
const handleChange = (event: MediaQueryListEvent) => {
setMatches(event.matches)
}
setMatches(mediaQuery.matches)
mediaQuery.addEventListener('change', handleChange)
return () => {
mediaQuery.removeEventListener('change', handleChange)
}
}, [query])
return matches
}
export function useIsMobile(): boolean {
return useMediaQuery('(max-width: 768px)')
}