Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 3095 | | Comparar con el anterior | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3719 stevensc 1
import { useLayoutEffect, useState } from 'react';
2
 
3
export function useMediaQuery(query, options = { defaultValue: false, initializeWithValue: true }) {
4
  const getMatches = (query) => {
5
    return window.matchMedia(query).matches;
6
  };
7
 
8
  const [matches, setMatches] = useState(() => {
9
    if (options.initializeWithValue) {
10
      return getMatches(query);
11
    }
12
    return options.defaultValue;
13
  });
14
 
15
  // Handles the change event of the media query.
16
  function handleChange() {
17
    setMatches(getMatches(query));
18
  }
19
 
20
  useLayoutEffect(() => {
21
    const matchMedia = window.matchMedia(query);
22
    handleChange();
23
 
24
    matchMedia.addEventListener('change', handleChange);
25
    return () => {
26
      matchMedia.removeEventListener('change', handleChange);
27
    };
28
  }, [query]);
29
 
30
  return matches;
31
}