R

ReflexKR

Reflex公式ドキュメント

触って覚えるReflexの基本

·

講座の概要

1

押すと変わる:Stateとイベント

2

出たり消えたり:条件付きレンダリング

3

リストを描く:rx.foreach

4

なぜifが使えない?コンパイル時と実行時

5

見た目を整える:コンポーネント、props、スタイル

6

アプリとページ、そしてフルーツバスケット

触って覚えるReflexの基本
2限目

時間 0:08–0:13

出たり消えたり:条件付きレンダリング

ログインしていれば「ようこそ」、していなければ「ログインしてください」。アプリでは、状態に応じて違う画面を見せたい場面がよくあります。この回では、Stateの値に応じて画面を切り替えるrx.condを使います。

2-1. rx.condで画面を切り替える (3分)

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

操作してみよう

Not Logged In

Toggle Loginを押すたびに見出しが切り替わります。

rx.condは3つの引数を受け取ります。

順番引数この例では
1条件(Var)LoginState.logged_in
2条件が真のときに表示するコンポーネント「Logged In」の見出し
3条件が偽のときに表示するコンポーネント「Not Logged In」の見出し
  • 3つ目の引数は省略できます。rx.cond(LoginState.logged_in, rx.text("Welcome!"))と書くと、ログインしているときだけ文字が表示され、そうでないときは何も表示されません。
  • ハンドラtoggle_loginは、1限目と同じイベントハンドラです。notで真と偽を反転させています。

2-2. でも、なぜ普通のifを使わないの? (2分)

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」とだけ覚えておいてください。

練習問題

  1. show_loginで、ボタンの文字も状態に応じて「Log In」/「Log Out」に切り替わるようにしてみましょう。ヒント:ボタンの子要素の位置にrx.cond(...)を入れます。
  2. rx.condはpropsの値にも使えます。見出しのcolorを、ログインしていれば"green"、そうでなければ"gray"にしてみましょう。

この回のチェックリスト

  • rx.condの3つの引数がそれぞれ何かを説明できる。
  • 3つ目の引数を省略するとどうなるかがわかる。
  • 画面のコードでStateの値にifを使ってはいけないことがわかる。

← 前へ

1限目 · 押すと変わる:Stateとイベント

次へ →

3限目 · リストを描く:rx.foreach

新しい授業・講座のお知らせを受け取る

この講座に授業が追加されたり、続きの講座が公開されたりしたらメールでお知らせします。

収集項目:メールアドレス・目的:この講座の新しい授業・公開のお知らせ・保有期間:解除のご依頼まで。他の目的には使わず、第三者にも提供しません。お知らせメールに返信いただければすぐに削除します。

質問と回答

この回について気になることを書き込んでください。すべての言語のページの質問がここに集まります。

リンクや書式なしで、そのままの文字で表示されます。

R

ReflexKR

触って学ぶPythonとReflex。すべての例はReflex 0.10.0で実際に動かして確認しています。

ReflexKRはバナー広告なし・無料で運営しています。役に立ったら、コーヒー一杯で応援してください。 ☕ コーヒーで応援する

アフィリエイトと支援について
한국어English日本語简体中文EspañolDeutsch

© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0

Built with Reflex