Rev 3095 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import { useLayoutEffect, useState } from 'react'const IS_SERVER = typeof window === 'undefined'export function useMediaQuery(query,{ defaultValue = false, initializeWithValue = true }) {const getMatches = (query) => {if (IS_SERVER) {return defaultValue}return window.matchMedia(query).matches}const [matches, setMatches] = useState(() => {if (initializeWithValue) {return getMatches(query)}return defaultValue})// Handles the change event of the media query.function handleChange() {setMatches(getMatches(query))}useLayoutEffect(() => {const matchMedia = window.matchMedia(query)handleChange()matchMedia.addEventListener('change', handleChange)return () => {matchMedia.removeEventListener('change', handleChange)}}, [query])return matches}