redhare-demo/hooks/useMediaQuery.js

22 lines
517 B
JavaScript

'use client'
import { useState, useEffect } from 'react'
const useMediaQuery = query => {
const [matches, setMatches] = useState(false)
useEffect(() => {
const media = window.matchMedia(query)
if (media.matches !== matches) {
setMatches(media.matches)
}
const listener = () => setMatches(media.matches)
window.addEventListener('resize', listener)
return () => window.removeEventListener('resize', listener)
}, [matches, query])
return matches
}
export default useMediaQuery