штатов

В 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...