From 774263d0ae95d2f06792b333e9d61d9e4840d34d Mon Sep 17 00:00:00 2001 From: Masen Furer Date: Thu, 3 Oct 2024 15:07:07 -0700 Subject: [PATCH] Avoid recreating the rx.State tree for every `get_state` --- reflex/state.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/reflex/state.py b/reflex/state.py index 0d2056cd0..c66070da7 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -2774,10 +2774,12 @@ class StateManagerDisk(StateManager): client_token, substate_address = _split_substate_key(token) root_state_token = _substate_key(client_token, substate_address.split(".")[0]) + root_state = self.states.get(root_state_token) + if root_state is None: + # Create a new root state which will be persisted in the next set_state call. + root_state = self.state(_reflex_internal_init=True) - return await self.load_state( - root_state_token, self.state(_reflex_internal_init=True) - ) + return await self.load_state(root_state_token, root_state) async def set_state_for_substate(self, client_token: str, substate: BaseState): """Set the state for a substate.