reflex-dev / reflex-examples

A repository full of Reflex example apps.
455 stars 351 forks source link

Help me with cookies please #238

Closed fungalspores closed 3 months ago

fungalspores commented 3 months ago

Index.py

import reflex as rx
import yaml

from win.state.language import LanguageState

def index() -> rx.Component:
    languages = get_language()
    current_language = LanguageState.language_cookie
    print(current_language)
    return rx.container(
        rx.heading("Выберите язык", font_size="1.5em"),
        rx.select(
            list(languages.values()),
            default_value=current_language,
        ),
    )

def get_language():
    with open("scr/site_text.yaml", 'r', encoding='utf-8') as file:
        texts = yaml.safe_load(file)
    return texts["languages"]

language.py

import reflex as rx

class LanguageState(rx.State):
    language_cookie: str = rx.Cookie(
        path = "/",
        name = "language",
    )

    def check_language(self):
        if not self.language_cookie:
            self.set_language_cookie("en")

    def get_language(self):
        return rx.get_cookie("language")

app.py

from win.pages import index
from .state.language import LanguageState

import reflex as rx

class State(rx.State):
    """Define empty state to allow access to rx.State.router."""

# Create the app.
app = rx.App()
app.add_page(index, route="/", on_load=LanguageState.check_language())

Why I receive print(current_language) == {state__language_state.language_cookie}, but I need str