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
- react
- Redux
- Recoil
- zustand
- jotai
- LiveStore - A state management solution using reactive SQLite and a built-in sync engine
Favorite site
State management library comparison
- Comparing the latest React state management libraries (feat. zustand, redux-toolkit, jotai, recoil) :: Dev Notepad (zustand, redux-toolkit, jotai, recoil)
- State management library comparison: Redux vs Recoil vs Zustand vs Jotai (redux, recoil, zustand, jotai)
Pages that link here