Skip to content

Instantly share code, notes, and snippets.

@sky0014
Created September 1, 2023 03:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sky0014/659723c51f3ae55e32e2e1a8feaa3ad5 to your computer and use it in GitHub Desktop.
Save sky0014/659723c51f3ae55e32e2e1a8feaa3ad5 to your computer and use it in GitHub Desktop.
React hooks that query is it in dark mode.
import { useEffect, useMemo, useState } from "react";
const DARK_MODE_SCHEME = "(prefers-color-scheme: dark)";
export function getIsDarkMode() {
return window.matchMedia(DARK_MODE_SCHEME).matches;
}
export function useDarkMode() {
const initValue = useMemo(getIsDarkMode, []);
const [isDarkMode, setDarkMode] = useState(initValue);
useEffect(() => {
const query = window.matchMedia(DARK_MODE_SCHEME);
const listener = (event: MediaQueryListEvent) => {
setDarkMode(event.matches);
};
query.addEventListener("change", listener);
return () => {
query.removeEventListener("change", listener);
};
}, []);
return isDarkMode;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment