File tree Expand file tree Collapse file tree 1 file changed +12
-11
lines changed Expand file tree Collapse file tree 1 file changed +12
-11
lines changed Original file line number Diff line number Diff line change 1
- import { useCallback , useEffect , useState } from "react" ;
1
+ import { useCallback , useEffect , useMemo , useState } from "react" ;
2
2
3
3
type Theme = "light" | "dark" | "system" ;
4
4
@@ -35,17 +35,18 @@ const useTheme = (): [Theme, (mode: Theme) => void] => {
35
35
darkModeMediaQuery . removeEventListener ( "change" , handleDarkModeChange ) ;
36
36
} ;
37
37
} , [ theme ] ) ;
38
-
39
- return [
38
+
39
+ const setThemeWithSideEffect = useCallback ( ( newTheme : Theme ) => {
40
+ setTheme ( newTheme ) ;
41
+ localStorage . setItem ( "theme" , newTheme ) ;
42
+ if ( newTheme !== "system" ) {
43
+ document . documentElement . classList . toggle ( "dark" , newTheme === "dark" ) ;
44
+ }
45
+ } , [ ] ) ;
46
+ return useMemo ( ( ) => [
40
47
theme ,
41
- useCallback ( ( newTheme : Theme ) => {
42
- setTheme ( newTheme ) ;
43
- localStorage . setItem ( "theme" , newTheme ) ;
44
- if ( newTheme !== "system" ) {
45
- document . documentElement . classList . toggle ( "dark" , newTheme === "dark" ) ;
46
- }
47
- } , [ ] ) ,
48
- ] ;
48
+ setThemeWithSideEffect ,
49
+ ] , [ theme ] ) ;
49
50
} ;
50
51
51
52
export default useTheme ;
You can’t perform that action at this time.
0 commit comments