diff --git a/reflex/app.py b/reflex/app.py index 65bc32438..942b9f9aa 100644 --- a/reflex/app.py +++ b/reflex/app.py @@ -541,7 +541,9 @@ class App(LifespanMixin, Base): # Ensure state is enabled if this page uses state. if self.state is None: - if on_load or component._has_event_triggers(): + if on_load or component._has_event_triggers( + exclude_event_trigger_values=[constants.ColorMode.TOGGLE] + ): self._enable_state() else: for var in component._get_vars(include_children=True): @@ -1117,6 +1119,7 @@ async def process( """ from reflex.utils import telemetry + print(f"Event: {event}\n ==================\n") try: # Add request data to the state. router_data = event.router_data diff --git a/reflex/components/component.py b/reflex/components/component.py index e465e2091..4826a8a2e 100644 --- a/reflex/components/component.py +++ b/reflex/components/component.py @@ -1113,17 +1113,31 @@ class Component(BaseComponent, ABC): return vars - def _has_event_triggers(self) -> bool: + def _has_event_triggers( + self, exclude_event_trigger_values: list[str] | None = None + ) -> bool: """Check if the component or children have any event triggers. + Args: + exclude_event_trigger_values: Event trigger var names to exclude from this check. + Returns: True if the component or children have any event triggers. """ - if self.event_triggers: + if exclude_event_trigger_values is None: + exclude_event_trigger_values = [] + if self.event_triggers and not any( + [ + trigger_value._var_name in exclude_event_trigger_values + for trigger_value in self.event_triggers.values() + ] + ): return True else: for child in self.children: - if isinstance(child, Component) and child._has_event_triggers(): + if isinstance(child, Component) and child._has_event_triggers( + exclude_event_trigger_values + ): return True return False