ReactJS - Komponenten-Lebenszyklus mit React Hooks

Hallo, ambitionierte Entwickler! Heute machen wir uns auf eine aufregende Reise in die Welt von ReactJS, mit dem Fokus auf den Komponenten-Lebenszyklus unter Verwendung von React Hooks. Machen Sie sich keine Sorgen, wenn Sie neu im Programmieren sind – ich werde Sie bei jedem Schritt mit klaren Erklärungen und vielen Beispielen führen. Also, tauchen wir ein!

ReactJS - Component Life Cycle Using React Hooks

Einführung in React Hooks

Bevor wir uns dem Komponenten-Lebenszyklus zuwenden, lassen Sie uns verstehen, was React Hooks sind. Stellen Sie sich Hooks als spezielle Werkzeuge vor, die es Ihnen ermöglichen, den Zustand und andere React-Funktionen zu verwenden, ohne eine Klasse zu schreiben. Sie sind wie magische Zauberstäbe, die Ihren funktionalen Komponenten Superkräfte verleihen!

Warum Hooks?

In den alten Zeiten (na ja, nicht so alt, aber in technischen Jahren) mussten wir Klassenkomponenten verwenden, um den Zustand und Nebenwirkungen zu verwalten. Aber Klassen können verwirrend sein, besonders für Anfänger. Hooks vereinfachen diesen Prozess und machen unseren Code sauberer und wiederverwendbarer.

Der Komponenten-Lebenszyklus

Genau wie wir Menschen haben auch React-Komponenten einen Lebenszyklus. Sie werden geboren (gemountet), sie wachsen und verändern sich (aktualisiert) und schließlich werden sie nicht mehr benötigt (abgemontiert). Das Verständnis dieses Lebenszyklus ist entscheidend für die Erstellung effizienter React-Anwendungen.

Die drei Phasen des Lebens einer Komponente

  1. Mounting: Die Komponente wird zum DOM hinzugefügt.
  2. Updating: Die Komponente wird neu gerendert, weil sich Props oder der Zustand geändert haben.
  3. Unmounting: Die Komponente wird aus dem DOM entfernt.

Nun sehen wir, wie wir diese Phasen mit Hooks verwalten können!

useState: Verwaltung des Komponenten-Zustands

Der useState Hook ist Ihr gå-to-Werkzeug für das Hinzufügen von Zustand zu funktionalen Komponenten. Sehen wir uns ein Beispiel an:

import React, { useState } from 'react';

function Counter() {
const [count, setCount] = useState(0);

return (
<div>
<p>Sie haben {count} Mal geklickt</p>
<button onClick={() => setCount(count + 1)}>
Klicken Sie mich
</button>
</div>
);
}

In diesem Beispiel initialisiert useState(0) eine Zustandsvariable count mit dem Wert 0. Die Funktion setCount ermöglicht es uns, diesen Zustand zu aktualisieren. Jedes Mal, wenn der Knopf geklickt wird, wird setCount(count + 1) aufgerufen, die Anzahl wird inkrementiert und die Komponente wird neu gerendert.

useEffect: Behandlung von Nebenwirkungen

Der useEffect Hook ist wie ein Schweizer Army Knife für die Verwaltung von Nebenwirkungen in Ihren Komponenten. Er kombiniert die Funktionalität mehrerer Lebenszyklusmethoden aus Klassenkomponenten.

import React, { useState, useEffect } from 'react';

function ExampleComponent() {
const [data, setData] = useState(null);

useEffect(() => {
// Diese Wirkung wird nach jedem Rendern ausgeführt
console.log('Komponente gerendert');

// Simulierung eines API-Aufrufs
const fetchData = async () => {
const response = await fetch('https://api.example.com/data');
const result = await response.json();
setData(result);
};

fetchData();

// Cleanup-Funktion
return () => {
console.log('Komponente wird abgemontiert oder neu gerendert');
};
}, []); // Leere Abhängigkeitsliste bedeutet, dass diese Wirkung nur einmal beim Mounting ausgeführt wird

return (
<div>
{data ? <p>{data}</p> : <p>Lädt...</p>}
</div>
);
}

Dieses Beispiel veranschaulicht mehrere wichtige Konzepte:

  1. Die Wirkung wird nach dem Rendern der Komponente ausgeführt.
  2. Wir simulieren einen API-Aufruf, um Daten abzurufen.
  3. Die Cleanup-Funktion (zurückgegeben von der Wirkung) wird vor der Demontage der Komponente oder vor der erneuten Ausführung der Wirkung aufgerufen.
  4. Die leere Abhängigkeitsliste [] bedeutet, dass diese Wirkung nur einmal beim Mounting ausgeführt wird.

benutzerdefinierte Hooks: Erstellung wiederverwendbarer Logik

Eine der mächtigsten Funktionen von Hooks ist die Fähigkeit, benutzerdefinierte Hooks zu erstellen. Diese ermöglichen es Ihnen, die Logik der Komponenten in wiederverwendbare Funktionen zu extrahieren. Lassen Sie uns einen benutzerdefinierten Hook für die Verarbeitung von Formularingaben erstellen:

import { useState } from 'react';

function useInput(initialValue) {
const [value, setValue] = useState(initialValue);

const handleChange = (event) => {
setValue(event.target.value);
};

return [value, handleChange];
}

// Verwendung des benutzerdefinierten Hooks
function LoginForm() {
const [username, handleUsernameChange] = useInput('');
const [password, handlePasswordChange] = useInput('');

const handleSubmit = (event) => {
event.preventDefault();
console.log(`Anmelden mit ${username} und ${password}`);
};

return (
<form onSubmit={handleSubmit}>
<input
type="text"
value={username}
onChange={handleUsernameChange}
placeholder="Benutzername"
/>
<input
type="password"
value={password}
onChange={handlePasswordChange}
placeholder="Passwort"
/>
<button type="submit">Anmelden</button>
</form>
);
}

Dieser benutzerdefinierte useInput Hook kapselt die Logik für die Verarbeitung von Formularingaben, macht unsere LoginForm Komponente viel sauberer und wiederverwendbarer.

React Children-Eigenschaft (Kontext)

Die children-Prop in React ermöglicht es Ihnen, Komponenten als Daten an andere Komponenten zu übergeben, was eine Möglichkeit bietet, Wrapperkomponenten zu erstellen. Dieses Konzept wird oft als "Kontext" bezeichnet.

function Panel({ children, title }) {
return (
<div className="panel">
<h2>{title}</h2>
{children}
</div>
);
}

function App() {
return (
<Panel title="Willkommen">
<p>Dies ist der Inhalt des Panels.</p>
<button>Klicken Sie mich!</button>
</Panel>
);
}

In diesem Beispiel kann die Panel-Komponente jeglichen Inhalt umschließen, der ihr als Kinder übergeben wird, was sie sehr wiederverwendbar macht.

Schlussfolgerung

Wir haben heute viel Boden覆盖! Vom Verständnis der Grundlagen von React Hooks bis hin zur Untersuchung des Komponenten-Lebenszyklus und sogar zur Erstellung benutzerdefinierter Hooks. Denken Sie daran, Übung macht den Meister, also fürchten Sie sich nicht, diese Konzepte in Ihren eigenen Projekten auszuprobieren.

Hier ist eine schnelle Referenztabelle der Hooks, die wir besprochen haben:

Hook Zweck Beispiel
useState Verwaltung des Komponenten-Zustands const [count, setCount] = useState(0);
useEffect Behandlung von Nebenwirkungen useEffect(() => { /* effect */ }, []);
benutzerdefinierte Hooks Erstellung wiederverwendbarer Logik const [value, handleChange] = useInput('');

Happy Coding und möge die Hooks mit Ihnen sein!

Credits: Image by storyset