mirror of
https://github.com/streamich/react-use.git
synced 2026-01-18 14:06:52 +00:00
27 lines
555 B
TypeScript
27 lines
555 B
TypeScript
import {useState, useEffect} from './react';
|
|
|
|
const useMedia = (query: string, defaultState: boolean = false) => {
|
|
const [state, setState] = useState(defaultState);
|
|
|
|
useEffect(() => {
|
|
let mounted = true;
|
|
const mql = window.matchMedia(query);
|
|
const onChange = () => {
|
|
if (!mounted) return;
|
|
setState(!!mql.matches);
|
|
};
|
|
|
|
mql.addListener(onChange);
|
|
setState(mql.matches);
|
|
|
|
return () => {
|
|
mounted = false;
|
|
mql.removeListener(onChange);
|
|
};
|
|
}, [query]);
|
|
|
|
return state;
|
|
};
|
|
|
|
export default useMedia;
|