remove theme event listener on cleanup
This commit is contained in:
@@ -7,11 +7,15 @@ export default function ThemeToggle() {
|
|||||||
const [darkTheme, setDarkTheme] = useState(false);
|
const [darkTheme, setDarkTheme] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
window
|
const onChange = (e: MediaQueryListEvent) => changeTheme(e.matches ? "dark" : "light");
|
||||||
.matchMedia("(prefers-color-scheme: dark)")
|
|
||||||
.addEventListener("change", (e) => changeTheme(e.matches ? "dark" : "light"));
|
window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", onChange);
|
||||||
|
|
||||||
changeTheme(window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
|
changeTheme(window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", onChange);
|
||||||
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
function changeTheme(theme: "dark" | "light") {
|
function changeTheme(theme: "dark" | "light") {
|
||||||
|
|||||||
Reference in New Issue
Block a user