Bisher hast du ganz selbstverständlich Komponenten wie rx.button, rx.heading und rx.box verwendet. In dieser Lektion fassen wir zusammen, wie du Komponenten erstellst, zusammensetzt und gestaltest. Dafür gibt es genau zwei Regeln.
Eine Komponente ist ein Baustein der Oberfläche, etwa ein Button, ein Text oder ein Bild. Reflex bringt viele eingebaute Komponenten mit, und sobald du eine Funktion schreibst, die eine Komponente zurückgibt, hast du deine eigene Komponente.
def my_button():
return rx.button("Click Me")localhost:3000
Live-VorschauUm eine Komponente in eine andere zu setzen, übergibst du sie als Positionsargument. Unten sind rx.text und my_button() Kinder von rx.box. Auch Komponenten aus anderen Funktionen rufst du einfach auf und setzt sie ein.
def my_container():
return rx.box(
rx.text("This is a page"),
# Reference components defined in other functions.
my_button(),
)localhost:3000
Live-VorschauThis is a page
Gibt es die gewünschte Komponente nicht, kannst du mit rx.el direkt HTML-Tags verwenden. rx.el.div ist <div>, rx.el.p ist <p>.
def my_div():
return rx.el.div(
rx.el.p("Use base html!"),
)localhost:3000
Live-VorschauUse base html!
Reicht auch das nicht, kannst du React-Komponenten aus npm einbinden (wrappen).
Verhalten und Aussehen einer Komponente legst du mit Keyword-Argumenten fest. Diese heißen Props. Jede Komponente hat ihre eigenen Props. Wenn du eine Komponente zum ersten Mal verwendest, schau in der Dokumentation nach, welche es gibt.
def half_filled_progress():
return rx.progress(value=50)localhost:3000
Live-VorschauNeben den eigenen Props einer Komponente kannst du auch CSS-Eigenschaften direkt als Props übergeben, um sie zu gestalten.
def round_button():
return rx.button("Click Me", border_radius="15px", font_size="18px")localhost:3000
Live-VorschauGut zu wissen — CSS-Eigenschaften schreibst du in snake_case: border-radius → border_radius, font-size → font_size. Mehr dazu findest du im Styling-Guide.
Zusammengefasst besteht eine Komponente aus Kindern und Props.
| Kinder (children) | Props | |
|---|---|---|
| Was | Text oder andere Komponenten, die hineinkommen | Eigenschaften, die Verhalten und Aussehen bestimmen |
| Übergabe | Positionsargumente | Keyword-Argumente |
| Beispiel | rx.box(rx.text("hi"), my_button()) | rx.button("Go", color_scheme="green") |
Auch in Lektion 1, als du eine Var mit rx.heading(MyState.count, color=MyState.color) sowohl als Kind als auch als Prop eingesetzt hast, galten genau diese zwei Regeln.
round_button um color_scheme="green" und size="3".rx.box in my_container padding="16px", border="1px solid #ccc" und border_radius="12px", damit es wie eine Karte aussieht.value von rx.progress durch CounterState.count aus Lektion 1 ersetzt? Bau es so, dass sich der Balken bei jedem Klick weiter füllt.rx.el verwenden, wenn es die passende Komponente nicht gibt.← Zurück
Lektion 4 · Warum klappt if nicht? Kompilierzeit vs. Laufzeit
Weiter →
Lektion 6 · Apps, Seiten und ein Obstkorb
Ü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.