Deine Erste Komponente
Komponenten sind eines der Kernkonzepte von React. Sie sind die Grundlage, auf der du Benutzeroberflächen (UI) erstellst, was sie zum perfekten Einstiegspunkt für deine React Reise macht!
You will learn
- Was eine Komponente ist
- Welche Rolle Komponenten in einer React Anwendung spielen
- Wie du deine erste React Komponente schreibst
Komponenten: UI Bausteine
Im Web erlaubt HTML uns strukturierte Dokumente mit den eingebauten Tags wie <h1>
und <li>
zu erstellen:
<article>
<h1>Meine Erste Komponente</h1>
<ol>
<li>Komponenten: UI Bausteine</li>
<li>Eine Komponente Definieren</li>
<li>Eine Komponente Nutzen</li>
</ol>
</article>
Dieses Markup repräsentiert diesen Artikel <article>
, seine Überschrift <h1>
, und ein (abgekürztes) Inhaltsverzeichnis als eine geordnete Liste <ol>
. Kombiniert mit CSS für das Styling und JavaScript für die Interaktivität, liegt Markup wie dieses hinter jeder Sidebar, jedem Avatar, jedes Modals, jedes Dropdown - jedes Stück UI, das du im Web siehst.
React lässt dich Markup, CSS, und JavaScript in benutzerdefinierte “Komponenten”, wiederverwendbare UI Elemente für deine Anwendung kombinieren. Der Code für das Inhaltsverzeichnis, das du oben gesehen hast, könnte in eine <TableOfContents />
Komponente umgewandelt werden, die du auf jeder Seite rendern könntest. Unter der Haube werden immer noch die gleichen HTML Tags wie <article>
, <h1>
, etc. verwendet.
Genau wie mit HTML Tags, kannst du Komponenten kombinieren, ordnen und verschachteln um ganze Seiten zu designen. Zum Beispiel ist die Dokumentationsseite, die du gerade liest, aus React Komponenten aufgebaut:
<PageLayout>
<NavigationHeader>
<SearchBar />
<Link to="/docs">Docs</Link>
</NavigationHeader>
<Sidebar />
<PageContent>
<TableOfContents />
<DocumentationText />
</PageContent>
</PageLayout>
Wenn den Projekt wächst, wirst du meken, dass viele deiner Designs durch das Wiederverwenden von Komponenten, die du bereits geschrieben hast, zusammengesetzt werden können was deinen Entwicklungsprozess beschleunigt. Unser Inhaltsverzeichnis oben könnte zu jeder Seite mit <TableOfContents />
hinzugefügt werden! Du kannst deinem Projekt sogar mit tausenden Komponenten, die von der React Open Source Community geteilt werden, auf die Sprünge helfen, wie Chakra UI und Material UI.
Eine Komponente definieren
Traditionell haben Webentwickler ihre Inhalte strukturiert und haben dann Interaktivität hinzugefügt, indem sie etwas JavaScript “drüber gestreut” haben. Das hat gut funktioniert, als Interaktionen eine nette Ergänzung im Web waren. Jetzt wird es von vielen Seiten und allen Apps erwartet. React stellt Interaktivität an erste Stelle, während es immer noch die gleiche Technologie verwendet: eine React Komponente ist eine JavaScript Funktion, die du mit Markup bestreuen kannst. So sieht das aus (du kannst das Beispiel unten bearbeiten):
export default function Profil() { return ( <img src="https://i.imgur.com/MK3eW3Am.jpg" alt="Katherine Johnson" /> ) }
Und so erstellst du eine Komponente:
Schritt 1: Exportiere die Komponente
The export default
prefix is a standard JavaScript syntax (not specific to React). It lets you mark the main function in a file so that you can later import it from other files. (More on importing in Importing and Exporting Components!)
Das export default
Präfix ist eine Standard JavaScript Syntax (nicht spezifisch für React). Es lässt dich die Hauptfunktion in einer Datei markieren, damit du sie später von anderen Dateien importieren kannst. (Mehr über das Importieren in Importieren und Exportieren von Komponenten!)
Schritt 2: Definiere die Funktion
Mit function Profil() { }
definierst du eine JavaScript Funktion mit dem Namen Profil
.
Schritt 3: Markup hinzufügen
Die Komponente gibt ein <img />
Tag mit src
und alt
Attributen zurück. <img />
ist wie HTML geschrieben, aber unter der Haube handelt es sich eigentlich um JavaScript. Diese Syntax wird JSX genannt und sie erlaubt es dir Markup in JavaScript einzubetten.
Return Statements können in einer Zeile geschrieben werden, wie in dieser Komponente:
return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;
Aber falls nicht dein gesamtes Markup in der gleichen Zeile wie das return
keyword ist, musst du das Markup in ein Paar Klammern einschließen:
return (
<div>
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</div>
);
Eine Komponente nutzen
Da du nun deine Profil
Komponente definiert hast, kannst du sie in anderen Komponenten nutzen. Zum Beispiel kannst du eine Galerie
Komponente exportieren, die mehrere Profil
Komponenten nutzt:
function Profil() { return ( <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" /> ); } export default function Galerie() { return ( <section> <h1>Großartige Wissenschaftlerinnen</h1> <Profil /> <Profil /> <Profil /> </section> ); }
Was der Browser sieht
Beachte den Unterschied in der Groß- und Kleinschreibung:
<section>
wird klein geschrieben, damit React weiß, dass wir uns auf einen HTML Tag beziehen.<Profil />
beginnt mit einem GroßbuchstabenP
, damit React weiß, dass wir unsere KomponenteProfil
nutzen wollen.
Und Profil
enthält sogar noch mehr HTML: <img />
. Am Ende sieht der Browser das:
<section>
<h1>Großartige Wissenschaftlerinnen</h1>
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>
Verschachteln und Organisieren von Komponenten
Komponenten sind normale JavaScript Funktionen, also kannst du mehrere Komponenten in der gleicen Datei haben. Das ist praktisch, wenn Komponenten relativ klein sind oder eng miteinander verbunden sind. Falls diese Datei zu voll wird, kannst du Profil
immer in eine separate Datei verschieben. Du wirst gleich auf der Seite über das Importieren lernen wie das geht.
Weil die Profil
Komponenten - sogar mehrmals! - innerhalb der Galerie
Komponente gerendert werden, können wir sagen, dass Galerie
eine Übergeordnete Komponente ist, die jede Profil
Komponente als “untergeordnete Komponente” rendert. Das ist ein Teil der Magie von React: du kannst eine Komponente einmal definieren und sie dann so oft und an so vielen Stellen nutzen wie du möchtest.
Eintauchen
Deine React Anwendung startet bei einer “root” Komponente. Normalerweise wird sie automatisch erstellt, wenn du ein neues Projekt startest. Zum Beispiel, wenn du CodeSandbox nutzt oder das Framework Next.js, wird die root Komponente in pages/index.js
definiert. In diesen Beispielen hast du root Komponenten exportiert.
Die meisten React Anwendungn nutzen Komponenten bis zum Ende. Das bedeutet, dass du nicht nur Komponenten für wiederverwendbare Teile wie Buttons nutzt, sondern auch für größere Teile wie Sidebars, Listen und letztendlich komplette Seiten! Komponenten sind ein praktischer Weg um UI Code und Markup zu organisieren, selbst wenn einige von ihnen nur einmal genutzt werden.
React basierte frameworks gehen noch einen Schritt weiter. Anstatt eine leere HTML Datei zu nutzen und React “übernehmen” zu lassen, generieren sie auch das HTML automatisch aus deinen React Komponenten. Das erlaubt deiner Anwendung etwas Inhalt anzuzeigen bevor der JavaScript Code geladen wird.
Weiterhin nutzen viele Webseiten nur React um Interaktivität zu bestehenden HTML Seiten hinzuzufügen. Sie haben viele root Komponenten anstatt einer einzigen für die gesamte Seite. Du kannst so viel - oder so wenig - React nutzen wie du brauchst.
Recap
Du hast gerade deine erste Komponente erstellt! Lass uns nochmal die wichtigsten Punkte zusammenfassen.
-
React lässt dich Komponenten erstellen, wiederverwendbare UI Elemente für deine Anwendung.
-
In einer React Anwendung ist jedes Stück UI eine Komponente.
-
React Komponenten sind normale JavaScript Funktionen, abgesehen davon:
- Sie müssen mit einem Großbuchstaben beginnen.
- Sie geben JSX-Markup zurück