Bläddra i källkod

fix hydration error (#3542)

Thomas Brandého 11 månader sedan
förälder
incheckning
046dbdef63

+ 2 - 1
reflex/.templates/web/components/reflex/chakra_color_mode_provider.js

@@ -6,12 +6,13 @@ import { ColorModeContext, defaultColorMode } from "/utils/context.js";
 export default function ChakraColorModeProvider({ children }) {
   const { theme, resolvedTheme, setTheme } = useTheme();
   const { colorMode, toggleColorMode } = chakraUseColorMode();
-  const [resolvedColorMode, setResolvedColorMode] = useState(theme);
+  const [resolvedColorMode, setResolvedColorMode] = useState(colorMode);
 
   useEffect(() => {
     if (colorMode != resolvedTheme) {
       toggleColorMode();
     }
+    setResolvedColorMode(resolvedTheme);
   }, [theme, resolvedTheme]);
 
   const rawColorMode = colorMode;

+ 1 - 1
reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js

@@ -5,7 +5,7 @@ import { ColorModeContext, defaultColorMode } from "/utils/context.js";
 export default function RadixThemesColorModeProvider({ children }) {
   const { theme, resolvedTheme, setTheme } = useTheme();
   const [rawColorMode, setRawColorMode] = useState(defaultColorMode);
-  const [resolvedColorMode, setResolvedColorMode] = useState(theme);
+  const [resolvedColorMode, setResolvedColorMode] = useState("dark");
 
   useEffect(() => {
     setRawColorMode(theme);

+ 8 - 2
reflex/components/radix/themes/color_mode.py

@@ -25,7 +25,13 @@ from reflex.components.core.cond import Cond, color_mode_cond, cond
 from reflex.components.lucide.icon import Icon
 from reflex.components.radix.themes.components.dropdown_menu import dropdown_menu
 from reflex.components.radix.themes.components.switch import Switch
-from reflex.style import LIGHT_COLOR_MODE, color_mode, set_color_mode, toggle_color_mode
+from reflex.style import (
+    LIGHT_COLOR_MODE,
+    color_mode,
+    resolved_color_mode,
+    set_color_mode,
+    toggle_color_mode,
+)
 from reflex.utils import console
 from reflex.vars import BaseVar, Var
 
@@ -183,7 +189,7 @@ class ColorModeSwitch(Switch):
         """
         return Switch.create(
             *children,
-            checked=color_mode != LIGHT_COLOR_MODE,
+            checked=resolved_color_mode != LIGHT_COLOR_MODE,
             on_change=toggle_color_mode,
             **props,
         )

+ 7 - 1
reflex/components/radix/themes/color_mode.pyi

@@ -14,7 +14,13 @@ from reflex.components.core.cond import Cond, color_mode_cond, cond
 from reflex.components.lucide.icon import Icon
 from reflex.components.radix.themes.components.dropdown_menu import dropdown_menu
 from reflex.components.radix.themes.components.switch import Switch
-from reflex.style import LIGHT_COLOR_MODE, color_mode, set_color_mode, toggle_color_mode
+from reflex.style import (
+    LIGHT_COLOR_MODE,
+    color_mode,
+    resolved_color_mode,
+    set_color_mode,
+    toggle_color_mode,
+)
 from reflex.utils import console
 from reflex.vars import BaseVar, Var
 from .components.icon_button import IconButton