Proyectos de Subversion LeadersLinked - SPA

Rev

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

import { useLayoutEffect, useState } from 'react';

export function useMediaQuery(query, options = { defaultValue: false, initializeWithValue: true }) {
  const getMatches = (query) => {
    return window.matchMedia(query).matches;
  };

  const [matches, setMatches] = useState(() => {
    if (options.initializeWithValue) {
      return getMatches(query);
    }
    return options.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;
}