react-reuse-hooks
Version:
A collection of 30+ production-ready reusable React hooks for web apps, covering state, effects, media, forms, and utilities.
18 lines (13 loc) • 538 B
JavaScript
import { useEffect, useState } from "react";
export function useDarkMode() {
const [isDarkMode, setIsDarkMode] = useState(() => {
return localStorage.getItem("theme") === "dark";
});
useEffect(() => {
const className = "dark";
const bodyClass = window.document.body.classList;
isDarkMode ? bodyClass.add(className) : bodyClass.remove(className);
localStorage.setItem("theme", isDarkMode ? "dark" : "light");
}, [isDarkMode]);
return [isDarkMode, () => setIsDarkMode((prev) => !prev)];
}