Loading

[Snippet] - useMediaQuery

import { useState, useEffect } from "react";

export function useMediaQuery(query) {
  const [matches, setMatches] = useState(false);

  useEffect(() => {
    const media = window.matchMedia(query);

    if (media.matches !== matches) {
      setMatches(media.matches);
    }

    const listener = () => {
      setMatches(media.matches);
    };

    media.addListener(listener);

    return () => media.removeListener(listener);
  }, [matches, query]);

  return matches;
}

usage:

function Page() {
  let isPageWide = useMediaQuery("(min-width: 800px)");

  return (
    <>
      {isPageWide && <UnnecessarySidebar />}
      <ImportantContent />
    </>
  );
}
posted @ 2021-12-09 11:19  shanejix  阅读(96)  评论(0)    收藏  举报