штатов
В Reflex State является единственным источником достоверных данных вашего приложения. В отличие от React, где состояние обычно находится на стороне клиента, состояние Reflex находится на сервере, что позволяет вам использовать всю мощь Python для бизнес-логики, сохраняя при этом синхронизацию пользовательского интерфейса.
Подсостояния и организация
По мере роста вашего приложения размещение всего в одном классе rx.State становится неуправляемым и медленным. Reflex позволяет разделить логику на подсостояния.
class ThemeState(rx.State):
is_dark: bool = False
def toggle_mode(self):
self.is_dark = not self.is_dark
class AuthState(rx.State):
user_id: str | None = None
@rx.var
def is_authenticated(self) -> bool:
return self.user_id is not None
Межгосударственная связь
Иногда одному государству необходимо знать о другом. Reflex предоставляет для этого два ключевых асинхронных метода:
get_state()
Получает весь экземпляр другого состояния. Используйте это, когда вам нужно вызвать методы или изменить несколько переменных в целевом состоянии.
class CartState(rx.State):
async def checkout(self):
auth = await self.get_state(AuthState)
if not auth.is_authenticated:
return rx.redirect("/login")
# Proceed with checkout...
get_var_value
Более эффективный способ получить одно значение без загрузки всего объекта целевого состояния.
class AnalyticsState(rx.State):
async def track_view(self):
user_id = await self.get_var_value(AuthState.user_id)
# Track view for user_id...