ReactJS - Bedingtes Rendern

Hallo da draußen, zukünftige React-Entwickler! Heute tauchen wir in eine der kraftvollsten Funktionen von React ein: das bedingte Rendern. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind; ich werde Sie durch dieses Konzept Schritt für Schritt führen, genau wie ich es in den letzten Jahren für unzählige Schüler getan habe. Also, holen Sie sich eine Tasse Kaffee (oder Tee, wenn das mehr Ihr Ding ist) und lassen Sie uns gemeinsam diese aufregende Reise antreten!

ReactJS - Conditional Rendering

Was ist Bedingtes Rendern?

Bevor wir uns den React-spezifischen Dingen zuwenden, lassen Sie uns darüber sprechen, was bedingtes Rendern eigentlich bedeutet. Stellen Sie sich vor, Sie erstellen eine magische Grußkarte. Abhängig davon, ob es Tag oder Nacht ist, soll die Karte entweder "Guten Morgen!" oder "Guten Abend!" sagen. Das ist bedingtes Rendern in der Kürze – verschiedene Inhalte basierend auf bestimmten Bedingungen anzeigen.

In React funktioniert bedingtes Rendern auf ähnliche Weise. Es ermöglicht uns, dynamische Benutzeroberflächen zu erstellen, die sich basierend auf verschiedenen Bedingungen oder Zuständen in unserer Anwendung ändern können.

Bedingtes Rendern in React

Nun sehen wir, wie wir bedingtes Rendern in React implementieren können. Wir beginnen mit den einfachsten Methoden und bewegen uns schrittweise zu fortgeschritteneren Techniken.

1. Verwenden von if/else-Anweisungen

Der direkteste Weg, bedingtes Rendern zu implementieren, ist die Verwendung von guten alten if/else-Anweisungen. Sehen wir uns ein Beispiel an:

function Greeting({ isLoggedIn }) {
if (isLoggedIn) {
return <h1>Willkommen zurück!</h1>;
} else {
return <h1>Bitte melden Sie sich an.</h1>;
}
}

In diesem Beispiel haben wir einen Greeting-Komponenten, der ein Prop isLoggedIn annimmt. Abhängig davon, ob der Benutzer angemeldet ist oder nicht, gibt er不同的 JSX zurück.

2. Verwenden von Ternären Operatoren

Während if/else-Anweisungen gut funktionieren, können sie unseren Code etwas umständlich machen. Hier kommt der ternäre Operator – einewicklungsärmerer Weg, bedingungen zu schreiben:

function Greeting({ isLoggedIn }) {
return (
<h1>
{isLoggedIn ? 'Willkommen zurück!' : 'Bitte melden Sie sich an.'}
</h1>
);
}

Dies tut genau dasselbe wie unser vorheriges Beispiel, aber in einer viel kompakteren Form. Es ist wie das Schweizer Taschenmesser des bedingten Renderns!

3. Verwenden des logischen && Operators

Manchmal möchten Sie nur etwas rendern, wenn eine Bedingung wahr ist, und nichts rendern, wenn sie falsch ist. In solchen Fällen kommt der logische && Operator gelegen:

function Notification({ hasUnreadMessages }) {
return (
<div>
{hasUnreadMessages &&
<p>Sie haben neue Nachrichten!</p>
}
</div>
);
}

In diesem Beispiel wird das <p>-Element nur gerendert, wenn hasUnreadMessages wahr ist. Wenn es falsch ist, wird nichts an seiner Stelle gerendert.

4. Verwenden von Switch-Anweisungen

Wenn Sie mehrere Bedingungen überprüfen müssen, kann eine Switch-Anweisung eine saubere Methode zum bedingten Rendern sein:

function WeatherForecast({ weather }) {
switch(weather) {
case 'sunny':
return <p>Es ist ein schöner Tag!</p>;
case 'rainy':
return <p>Vergessen Sie nicht Ihren Schirm!</p>;
case 'snowy':
return <p-Packen Sie sich warm ein, draußen ist es kalt!</p>;
default:
return <p>Wettervorhersage nicht verfügbar.</p>;
}
}

Dieser Ansatz ist besonders nützlich, wenn Sie mehrere unterschiedliche Fälle behandeln müssen.

5. Bedingtes Rendern von Komponenten

Manchmal möchten Sie ganze Komponenten bedingt rendern. Hier ist, wie Sie das tun können:

function Dashboard({ isAdmin }) {
return (
<div>
<h1>Willkommen auf Ihrem Dashboard</h1>
{isAdmin && <AdminPanel />}
<UserPanel />
</div>
);
}

In diesem Beispiel wird die AdminPanel-Komponente nur gerendert, wenn isAdmin wahr ist, während die UserPanel-Komponente immer gerendert wird.

Fortgeschrittene Techniken

Nun, da wir die Grundlagen abgedeckt haben, schauen wir uns einige fortgeschrittene Techniken für das bedingte Rendern an.

6. Verwenden von Objekten für das Bedingte Rendern

Manchmal finden Sie sich mit vielen Bedingungen wieder. In solchen Fällen kann die Verwendung eines Objekts Ihren Code besser wartbar machen:

const PAGES = {
home: <HomePage />,
about: <AboutPage />,
contact: <ContactPage />,
};

function App({ currentPage }) {
return (
<div>
{PAGES[currentPage] || <NotFoundPage />}
</div>
);
}

Dieser Ansatz ist besonders nützlich, wenn Sie viele unterschiedliche Seiten oder Komponenten basierend auf einer Bedingung rendern müssen.

7. Bedingtes Rendern mit HOCs

Higher-Order Components (HOCs) können auch für das bedingte Rendern verwendet werden. Hier ist ein einfaches Beispiel:

function withAuth(Component) {
return function AuthenticatedComponent(props) {
const isAuthenticated = checkAuthStatus(); // Implementieren Sie diese Funktion
if (isAuthenticated) {
return <Component {...props} />;
} else {
return <LoginPage />;
}
}
}

const ProtectedPage = withAuth(SecretPage);

Diese HOC fügt jede Komponente, die sie umgibt, eine Authentifizierungslogik hinzu und rendert die Komponente nur, wenn der Benutzer authentifiziert ist.

Schlussfolgerung

Bedingtes Rendern ist ein leistungsfähiges Werkzeug in Ihrem React-Werkzeugkasten. Es ermöglicht Ihnen, dynamische, reaktive Benutzeroberflächen zu erstellen, die sich an wechselnde Daten und Benutzerinteraktionen anpassen können. Wie bei jedem programmatischen Konzept ist der Schlüssel zum Beherrschen des bedingten Renderns die Übung. Versuchen Sie, diese Techniken in Ihren eigenen Projekten zu implementieren, und bald werden Sie wie ein Profi bedingt rendern können!

Denken Sie daran, dass es keine eine "richtige" Methode gibt, um bedingtes Rendern durchzuführen. Die beste Methode hängt von Ihrem spezifischen Use Case und Ihren persönlichen (oder Team-)Präferenzen ab. Also experimentieren Sie, haben Sie Spaß und viel Spaß beim Programmieren!

Credits: Image by storyset