ReactJS - Komponenten: Dein Tor zum Aufbau dynamischer Benutzeroberflächen

Hallo da draußen, zukünftige React-Zauberer! ? Ich freue mich sehr, euer Guide auf dieser aufregenden Reise in die Welt der React-Komponenten zu sein. Als jemand, der seit Jahren Informatik unterrichtet, kann ich euch sagen, dass das Verständnis von Komponenten wie das Öffnen eines Schatzkastens voller Möglichkeiten der Webentwicklung ist. Also tauchen wir ein und machen dieses komplexe Thema so klar wie einen glasklaren See!

ReactJS - Components

Was sind React-Komponenten?

Bevor wir mit dem Coden beginnen, lassen wir uns darstellen, was Komponenten sind. Stellt euch vor, ihr baut ein Haus mit Lego-Steinen. Jedes Zimmer könnte als Komponente betrachtet werden - selbstaufhaltend, wiederverwendbar und Teil einer größeren Struktur. Genau das sind React-Komponenten in der Welt der Webentwicklung!

Komponenten sind die Bausteine jeder React-Anwendung. Sie sind unabhängige und wiederverwendbare Stücke Code, die die gleiche Funktion wie JavaScript-Funktionen erfüllen, aber isoliert arbeiten und HTML über eine Render-Funktion zurückgeben.

Arten von React-Komponenten

Im React-Universum haben wir zwei Hauptarten von Komponenten:

  1. Funktionskomponenten
  2. Klassenkomponenten

Lassen wir uns jede dieser Arten im Detail erkunden.

Funktionskomponenten

Funktionskomponenten sind die einfachste Möglichkeit, Komponenten in React zu schreiben. Sie sind nichts anderes als JavaScript-Funktionen, die JSX (React's Syntax zur Beschreibung dessen, wie die UI aussehen sollte) zurückgeben.

Erstellen einer Funktionskomponente

So erstellt ihr eine einfache Funktionskomponente:

function Welcome(props) {
return <h1>Hello, {props.name}!</h1>;
}

Lassen wir das auseinanderfallen:

  • Wir definieren eine Funktion namens Welcome.
  • Sie nimmt einen einzigen Argument, props (kurz für Eigenschaften).
  • Sie gibt ein Stück JSX zurück, das ein <h1>-Element mit einer Begrüßung enthält.
  • {props.name} ist die Art und Weise, wie wir die name-Eigenschaft nutzen, die an diese Komponente übergeben wird.

Um diese Komponente zu verwenden, würdet ihr schreiben:

<Welcome name="Alice" />

Dies würde auf der Seite "Hello, Alice!" rendern.

Ist das nicht toll? Es ist, als ob ihr eigene benutzerdefinierte HTML-Tags erstellt!

Klassenkomponenten

Klassenkomponenten sind etwas komplexer, bieten aber mehr Funktionen. Sie sind ES6-Klassen, die von React.Component erben.

Erstellen einer Klassenkomponente

So erstellt ihr eine Klassenkomponente:

import React from 'react';

class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}!</h1>;
}
}

Lassen wir das analysieren:

  • Wir importieren React (notwendig für Klassenkomponenten).
  • Wir definieren eine Klasse namens Welcome, die React.Component erweitert.
  • Die Klasse hat eine render()-Methode, die JSX zurückgibt.
  • Wir greifen auf Props über this.props anstelle von nur props zu.

Die Verwendung dieser Komponente sieht genau so aus wie bei der Funktionskomponente:

<Welcome name="Bob" />

Dies würde auf der Seite "Hello, Bob!" rendern.

Wann sollte man Funktions- oder Klassenkomponenten verwenden?

Hier ist eine kurze Vergleichstabelle, um euch zu helfen:

Eigenschaft Funktionskomponenten Klassenkomponenten
Syntax Einfacher, leichter lesbar und zu testen Komplexer
State Können Hooks für State verwenden Können this.state verwenden
Lebenszyklusmethoden Verwenden useEffect-Hook Haben Zugang zu allen Lebenszyklusmethoden
Leistung Etwas besser Etwas langsamer
Zukunft in modernem React bevorzugt Könnten in Zukunft ausphasen

Als allgemeine Regel: Beginnt mit Funktionskomponenten und verwendet nur Klassenkomponenten, wenn ihr spezifische Funktionen benötigt, die sie bieten.

Erstellen von komplexeren Komponenten

Nun, da wir die Grundlagen abgedeckt haben, lassen uns ein komplexeres Komponente erstellen, das zeigt, wie wir größere UI-Teile aus kleineren Komponenten zusammensetzen können.

function Comment(props) {
return (
<div className="Comment">
<UserInfo user={props.author} />
<div className="Comment-text">
{props.text}
</div>
<div className="Comment-date">
{formatDate(props.date)}
</div>
</div>
);
}

function UserInfo(props) {
return (
<div className="UserInfo">
<Avatar user={props.user} />
<div className="UserInfo-name">
{props.user.name}
</div>
</div>
);
}

function Avatar(props) {
return (
<img className="Avatar"
src={props.user.avatarUrl}
alt={props.user.name}
/>
);
}

In diesem Beispiel:

  • Wir haben eine Hauptkomponente Comment, die eine UserInfo-Komponente verwendet.
  • Die UserInfo-Komponente verwendet ihrerseits eine Avatar-Komponente.
  • Jede Komponente ist für die Darstellung eines bestimmten Teils der UI verantwortlich.

Diese Struktur zeigt die Macht der Komponentenzusammensetzung - das Erstellen komplexer UIs aus einfachen, wiederverwendbaren Teilen.

Aufteilen von Komponenten

Wenn eure App wächst, ist es wichtig, Komponenten in kleinere, handhabbare Stücke zu teilen. Aber wie wisst ihr, wann ihr eine Komponente teilen sollt? Hier sind einige Richtlinien:

  1. Einzelfunktionsprinzip: Wenn eure Komponente zu viele Dinge macht, spaltet sie.
  2. Wiederverwendbarkeit: Wenn ein Teil eurer Komponente woanders verwendet werden könnte, macht ihn zu einer eigenen Komponente.
  3. Komplexität: Wenn eure Komponente schwer zu verstehen wird, könnte es an der Zeit sein, sie zu teilen.

Denkt daran, Komponenten sind wie Lego-Steine - je modularer sie sind, desto flexibler wird eure Anwendung!

Fazit

Glückwunsch! Ihr habt den ersten großen Schritt in die Welt der React-Komponenten gemacht. Wir haben Funktionskomponenten, Klassenkomponenten, wie man sie erstellt und haben sogar die Komponentenzusammensetzung und das Aufteilen angerissen.

Denkt daran, das Beherrschen von React-Komponenten ist wie das Lernen eines Instruments - es erfordert Übung. Also lasst euch nicht entmutigen, wenn es nicht sofort klickt. Weiter codieren, weiter experimentieren, und bald werdet ihr wunderschöne React-Symphonien komponieren!

In unserer nächsten Lektion werden wir tiefer in Props und State eintauchen, das dynamische Duo, das eure Komponenten zum Leben erweckt. Bis dahin, viel Spaß beim Coden! ??

Credits: Image by storyset