diff --git a/reflex/state.py b/reflex/state.py index 588383518b9..48dbf0f19e4 100644 --- a/reflex/state.py +++ b/reflex/state.py @@ -3937,6 +3937,8 @@ def __getitem__(self, key: Any) -> Any: The item value. """ value = super().__getitem__(key) + if isinstance(key, slice) and isinstance(value, list): + return [self._wrap_recursive(item) for item in value] # Recursively wrap mutable items retrieved through this proxy. return self._wrap_recursive(value) diff --git a/tests/units/test_state.py b/tests/units/test_state.py index 891f02b002c..fe1e8c2fc8a 100644 --- a/tests/units/test_state.py +++ b/tests/units/test_state.py @@ -1505,6 +1505,10 @@ def test_setattr_of_mutable_types(mutable_state: MutableTestState): assert isinstance(array[1], list) assert isinstance(array[2], MutableProxy) assert isinstance(array[2], dict) + assert isinstance(array[:], list) + assert not isinstance(array[:], MutableProxy) + assert isinstance(array[:][1], MutableProxy) + assert isinstance(array[:][1], list) assert isinstance(hashmap, MutableProxy) assert isinstance(hashmap, dict)