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" ;
22
33type Theme = "light" | "dark" | "system" ;
44
@@ -35,17 +35,18 @@ const useTheme = (): [Theme, (mode: Theme) => void] => {
3535 darkModeMediaQuery . removeEventListener ( "change" , handleDarkModeChange ) ;
3636 } ;
3737 } , [ 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 ( ( ) => [
4047 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 ] ) ;
4950} ;
5051
5152export default useTheme ;
You can’t perform that action at this time.
0 commit comments