Oberflächen, in denen sich dieselbe Form immer wieder wiederholt, etwa To-do-Listen, Kommentare oder Produktkarten, zeichnest du aus Listendaten. In dieser Lektion verwendest du rx.foreach, um eine Liste aus dem State auf der Seite darzustellen.
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
Live-VorschauAn rx.foreach übergibst du zwei Dinge.
ListState.itemsrender_item. Du übergibst die Funktion selbst, also ohne Klammern.Reflex wendet render_item auf jeden Eintrag der Liste an und erzeugt daraus Komponenten. Kommen später Einträge hinzu oder fallen weg, ändert sich die Liste auf der Seite mit. Das siehst du in Lektion 6 beim Obstkorb selbst.
Wichtig ist: Das item, das render_item entgegennimmt, hat nicht den Typ str, sondern rx.Var[str].
render_item ist eine UI-Funktion und läuft nur einmal beim Start der App. Zu diesem Zeitpunkt ist noch unbekannt, was in der Liste stehen wird, also ist item eine Var, die auf einen „später eingesetzten Wert“ zeigt.len(item) verwenden. Stattdessen nutzt du die Var-Operationen, die Reflex für Vars bereitstellt: item.length() liefert die Anzahl der Zeichen, item.upper() den Wert in Großbuchstaben. Auch das ist Thema von Lektion 4.Aus demselben Grund funktioniert auch die Python-List-Comprehension [rx.list.item(i) for i in ListState.items] nicht. Um über eine Liste im State zu iterieren, nimmst du immer rx.foreach.
items zwei weitere Obstsorten hinzu und prüfe, ob sie auf der Seite erscheinen.render_item statt rx.list.item ein rx.badge(item) zurückgeben. Dieselben Daten werden dann in anderer Form dargestellt.items hinzufügt. Die Lösung findest du in Lektion 6.rx.foreach übergebe.rx.foreach statt einer List-Comprehension verwende.← Zurück
Lektion 2 · Mal da, mal weg: bedingtes Rendering
Weiter →
Lektion 4 · Warum klappt if nicht? Kompilierzeit vs. Laufzeit
Über neue Lektionen informiert werden
Wir schicken dir eine E-Mail, wenn dieser Kurs neue Lektionen bekommt oder ein Folgekurs erscheint.
R
ReflexKR
Python und Reflex zum Anfassen. Alle Beispiele wurden mit Reflex 0.10.0 ausgeführt und geprüft.
ReflexKR ist kostenlos und ohne Werbebanner. Wenn es dir geholfen hat, kannst du es mit einem Kaffee unterstützen. ☕ Spendier uns einen Kaffee
Hinweis zu Affiliate-Links© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
Fragen & Antworten
Frag alles zu dieser Lektion. Fragen aus allen Sprachversionen dieser Seite erscheinen hier gemeinsam.