Skip to content

Commit 2c05b76

Browse files
committed
themetoggleのコード改善
1 parent db9f312 commit 2c05b76

1 file changed

Lines changed: 6 additions & 9 deletions

File tree

app/[docs_id]/themeToggle.tsx

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,6 @@ import { useState, useEffect} from "react";
44
export function useChangeTheme(){
55
const [theme, setTheme] = useState("tomorrow");
66
useEffect(() => {
7-
const checkIsDarkSchemePreferred = () =>
8-
window?.matchMedia?.('(prefers-color-scheme:dark)')?.matches ?? false;
9-
const initialTheme = checkIsDarkSchemePreferred() ? "dark" : "light";
10-
document.documentElement.setAttribute("data-theme", initialTheme);
11-
setTheme(initialTheme === "dark" ? "twilight" : "tomorrow");
127

138
const updateTheme = () => {
149
const theme = document.documentElement.getAttribute("data-theme");
@@ -28,11 +23,14 @@ export function useChangeTheme(){
2823

2924
};
3025
export function ThemeToggle() {
31-
const [isChecked, setIsChecked] = useState(false);
3226
const theme = useChangeTheme();
27+
const isChecked = theme === "twilight";
3328
useEffect(() => {
34-
setIsChecked(theme === "twilight");
35-
}, [theme]);
29+
const checkIsDarkSchemePreferred = () =>
30+
window?.matchMedia?.('(prefers-color-scheme:dark)')?.matches ?? false;
31+
const initialTheme = checkIsDarkSchemePreferred() ? "dark" : "light";
32+
document.documentElement.setAttribute("data-theme", initialTheme);
33+
}, []);
3634

3735
return (
3836
<label className="flex cursor-pointer gap-2" style={{ marginLeft: "1em" }}>
@@ -56,7 +54,6 @@ export function ThemeToggle() {
5654
className="toggle theme-controller"
5755
onChange={(e) => {
5856
const isdark = e.target.checked;
59-
setIsChecked(isdark);
6057
const theme = isdark ? "dark" : "light";
6158
document.documentElement.setAttribute("data-theme", theme);
6259
}}

0 commit comments

Comments
 (0)