R

ReflexKR

Reflex公式ドキュメント

触って覚えるReflexの基本

·

講座の概要

1

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

2

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

3

リストを描く:rx.foreach

4

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

5

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

6

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

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

時間 0:13–0:18

リストを描く:rx.foreach

ToDoリスト、コメント、商品カードのように、同じ形が何度も繰り返される画面はリストのデータから描きます。この回では、Stateにあるリストを画面に描くrx.foreachを使います。

3-1. rx.foreachでリストを描く (3分)

class ListState(rx.State):
    items: list[str] = ["Apple", "Banana", "Cherry"]


def render_item(item: rx.Var[str]):
    # Render a single item.
    # Note that item here is a Var, not a str!
    return rx.list.item(item)


def show_fruits():
    return rx.list.unordered(
        rx.foreach(ListState.items, render_item),
    )

localhost:3000

実行画面
  • Apple
  • Banana
  • Cherry
Stateのリストにある3つの項目が、1つずつ描かれました。

rx.foreachには2つのものを渡します。

  1. リストのVar:ListState.items
  2. 項目を1つ描く関数:render_item。かっこを付けずに、関数そのものを渡します。

Reflexがリストの項目ごとにrender_itemを適用して、コンポーネントを作ります。あとでリストに項目が追加されたり削除されたりすると、画面のリストも一緒に変わります。これは6限目のフルーツバスケットで実際に確かめます。

3-2. itemは文字列ではなくVar (2分)

render_itemが受け取るitemの型が、strではなくrx.Var[str]になっている点が重要です。

  • render_itemも画面の関数なので、アプリの起動時に一度だけ実行されます。その時点ではリストに何が入るかわからないため、itemは「あとで値が入る場所」を指すVarになっています。
  • そのため、len(item)のようなPythonの組み込み関数は使えません。代わりに、ReflexがVar用に用意しているVar演算を使います。item.length()は文字数、item.upper()は大文字に変換した値です。これも4限目のテーマです。

Pythonのリスト内包表記[rx.list.item(i) for i in ListState.items]も、同じ理由で動きません。Stateのリストを繰り返し処理するときは、常にrx.foreachを使います。

練習問題

  1. itemsにフルーツをあと2つ追加して、画面に表示されるか確かめてみましょう。
  2. render_itemがrx.list.itemの代わりにrx.badge(item)を返すように変えてみましょう。同じデータが違う見た目で描かれます。
  3. ボタンを押すとitemsにフルーツを追加するイベントハンドラを作ってみましょう。答えは6限目にあります。

この回のチェックリスト

  • rx.foreachに渡す2つのものを説明できる。
  • 項目を描く関数が受け取る値がVarである理由がわかる。
  • Stateのリストにはリスト内包表記ではなくrx.foreachを使うことがわかる。

← 前へ

2限目 · 出たり消えたり:条件付きレンダリング

次へ →

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

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

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

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

質問と回答

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

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

R

ReflexKR

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

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

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

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

Built with Reflex