ログインしていれば「ようこそ」、していなければ「ログインしてください」。アプリでは、状態に応じて違う画面を見せたい場面がよくあります。この回では、Stateの値に応じて画面を切り替えるrx.condを使います。
class LoginState(rx.State):
logged_in: bool = False
@rx.event
def toggle_login(self):
self.logged_in = not self.logged_in
def show_login():
return rx.box(
rx.cond(
LoginState.logged_in,
rx.heading("Logged In", as_="h2"),
rx.heading("Not Logged In", as_="h2"),
),
rx.button("Toggle Login", on_click=LoginState.toggle_login),
)localhost:3000
操作してみようrx.condは3つの引数を受け取ります。
| 順番 | 引数 | この例では |
|---|---|---|
| 1 | 条件(Var) | LoginState.logged_in |
| 2 | 条件が真のときに表示するコンポーネント | 「Logged In」の見出し |
| 3 | 条件が偽のときに表示するコンポーネント | 「Not Logged In」の見出し |
rx.cond(LoginState.logged_in, rx.text("Welcome!"))と書くと、ログインしているときだけ文字が表示され、そうでないときは何も表示されません。toggle_loginは、1限目と同じイベントハンドラです。notで真と偽を反転させています。Pythonなら、こう書きたくなるところです。
def show_login():
if LoginState.logged_in:
return rx.heading("Logged In", as_="h2")
return rx.heading("Not Logged In", as_="h2")このコードは動きません。画面の関数はアプリの起動時に一度だけ実行されますが、その時点ではまだユーザーがログインしているかどうかわからないからです。rx.condは「あとでブラウザで値を見て選んでね」という指示を画面に埋め込んでおきます。
なぜこうなるのかは、4限目で詳しく解説します。今は「画面のコードでStateの値によって分岐させるときはrx.cond」とだけ覚えておいてください。
show_loginで、ボタンの文字も状態に応じて「Log In」/「Log Out」に切り替わるようにしてみましょう。ヒント:ボタンの子要素の位置にrx.cond(...)を入れます。rx.condはpropsの値にも使えます。見出しのcolorを、ログインしていれば"green"、そうでなければ"gray"にしてみましょう。rx.condの3つの引数がそれぞれ何かを説明できる。ifを使ってはいけないことがわかる。新しい授業・講座のお知らせを受け取る
この講座に授業が追加されたり、続きの講座が公開されたりしたらメールでお知らせします。
R
ReflexKR
触って学ぶPythonとReflex。すべての例はReflex 0.10.0で実際に動かして確認しています。
ReflexKRはバナー広告なし・無料で運営しています。役に立ったら、コーヒー一杯で応援してください。 ☕ コーヒーで応援する
アフィリエイトと支援について© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
質問と回答
この回について気になることを書き込んでください。すべての言語のページの質問がここに集まります。