blob: 50ac0385fdf7a276b2358782b4ccaf7cf954458a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import { useEffect } from 'react';
export type UseMatchMediaCallback = (ev: MediaQueryListEvent) => void;
/**
* React hook to watch for media changes based on the given query.
*
* @param {string} query - A media query.
* @param {UseMatchMediaCallback} cb - A callback function to execute on change.
*/
export const useMatchMedia = (query: string, cb: UseMatchMediaCallback) => {
useEffect(() => {
window.matchMedia(query).addEventListener('change', cb);
return () => window.matchMedia(query).removeEventListener('change', cb);
}, [cb, query]);
};
|