Skip to content
Search

Recoil

lastmod 2025-06-04created 2022-11-095 edits

A React-like state management library

How to apply prefers-color-scheme: dark

recoil.js file:

import {atom} from 'recoil';

export const darkModeState = atom({
  key: 'darkModeState',
  default:
    typeof window !== 'undefined' &&
    window.matchMedia('(prefers-color-scheme: dark)').matches,
});

File implementing useRecoilState:

  const [darkMode, setDarkMode] = useRecoilState(darkModeState);
  useEffect(() => {
    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');

    setDarkMode(mediaQuery.matches);

    const handleChange = (e: any) => {
      setDarkMode(e.matches);
    };

    mediaQuery.addEventListener('change', handleChange);

    return () => {
      mediaQuery.removeEventListener('change', handleChange);
    };
  }, [setDarkMode]);

See also

Favorite site

State management library comparison

author Zer0 sitemap