Skip to content

Commit d15cdfa

Browse files
committed
Update _potentially_dirty_states when adding explicit dependency
Ensure that fetching a dependency state causes dependent states to also be fetched.
1 parent 6fe1017 commit d15cdfa

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

reflex/vars/base.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2488,12 +2488,18 @@ def add_dependency(self, objclass: type[BaseState], dep: Var):
24882488
var_name = all_var_data.field_name
24892489
if var_name:
24902490
self._static_deps.setdefault(state_name, set()).add(var_name)
2491-
objclass.get_root_state().get_class_substate(
2491+
target_state_class = objclass.get_root_state().get_class_substate(
24922492
state_name
2493-
)._var_dependencies.setdefault(var_name, set()).add((
2493+
)
2494+
target_state_class._var_dependencies.setdefault(
2495+
var_name, set()
2496+
).add((
24942497
objclass.get_full_name(),
24952498
self._name,
24962499
))
2500+
target_state_class._potentially_dirty_states.add(
2501+
objclass.get_full_name()
2502+
)
24972503
return
24982504
msg = (
24992505
"ComputedVar dependencies must be Var instances with a state and "

tests/units/test_state.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4304,6 +4304,8 @@ class OtherState(rx.State):
43044304
state = await mock_app.state_manager.get_state(_substate_key(token, OtherState))
43054305
other_state = await state.get_state(OtherState)
43064306
assert comp.State is not None
4307+
# The state should have been pre-cached from the dependency.
4308+
assert comp.State.get_name() in state.substates
43074309
comp_state = await state.get_state(comp.State)
43084310
assert comp_state.dirty_vars == set()
43094311

0 commit comments

Comments
 (0)