2021-08-30 05:13:58 -07:00
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
|
|
|
|
// A hook to determine whether a CSS media query finds any matches.
|
|
|
|
const useMedia = (query: string): boolean => {
|
|
|
|
const mediaQuery = window.matchMedia(query);
|
|
|
|
const [matches, setMatches] = useState(mediaQuery.matches);
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
const handler = () => setMatches(mediaQuery.matches);
|
|
|
|
mediaQuery.addEventListener('change', handler);
|
|
|
|
return () => mediaQuery.removeEventListener('change', handler);
|
2021-09-08 08:24:54 -07:00
|
|
|
}, [mediaQuery]);
|
2021-08-30 05:13:58 -07:00
|
|
|
|
|
|
|
return matches;
|
|
|
|
};
|
|
|
|
|
|
|
|
export default useMedia;
|