Skip to content

Commit e99f462

Browse files
committed
mark router and router_data as dirty when patching state
definitely the token will be different. although private-dependent data should use private states, it's common for llm generated code to define router_data dependent vars in the linked state itself, so we make that special case work
1 parent cbb4027 commit e99f462

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

reflex/istate/shared.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from collections.abc import AsyncIterator
66
from typing import Self, TypeVar
77

8+
from reflex.constants import ROUTER_DATA
89
from reflex.event import Event, get_hydrate_event
910
from reflex.state import BaseState, State, _override_base_method, _substate_key
1011
from reflex.utils.exceptions import ReflexRuntimeError
@@ -82,9 +83,12 @@ async def _patch_state(
8283
linked_state.dirty_vars.update(linked_state.backend_vars)
8384
linked_state.dirty_vars.update(linked_state.computed_vars)
8485
linked_state._mark_dirty()
85-
# Apply the updates into the existing state tree for rehydrate.
86-
root_state = original_state._get_root_state()
87-
await root_state._get_resolved_delta()
86+
# Apply the updates into the existing state tree for rehydrate.
87+
root_state = original_state._get_root_state()
88+
root_state.dirty_vars.add("router")
89+
root_state.dirty_vars.add(ROUTER_DATA)
90+
root_state._mark_dirty()
91+
await root_state._get_resolved_delta()
8892
yield
8993
finally:
9094
original_parent_state.substates[state_name] = original_state

0 commit comments

Comments
 (0)