Heim > Web-Frontend > js-Tutorial > React Js Part Lifecycle-Methoden und Hooks in React

React Js Part Lifecycle-Methoden und Hooks in React

Barbara Streisand
Freigeben: 2024-11-02 14:29:02
Original
883 Leute haben es durchsucht

React Js Part  Lifecycle Methods and Hooks in React

React ist eine JavaScript-Bibliothek, die es uns ermöglicht, Benutzeroberflächen deklarativ zu erstellen. Eines der Schlüsselkonzepte in React ist die Art und Weise, wie wir den Lebenszyklus von Komponenten verwalten. In diesem Artikel werden wir zwei Hauptaspekte diskutieren: Lebenszyklusmethoden in Klassenkomponenten und Hooks.

1. Lebenszyklusmethoden in Klassenkomponenten

Lebenszyklusmethoden sind spezielle Methoden, die in verschiedenen Phasen des Lebenszyklus einer Komponente aufgerufen werden. Hier sind einige der gängigsten Lebenszyklusmethoden und ihre Zwecke:

A. Montage

  • Konstruktor (Requisiten): Die erste aufgerufene Methode. Wird normalerweise zum Initialisieren von Status- und Bindungsmethoden verwendet.
constructor(props) {
  super(props);
  this.state = { count: 0 };
}
Nach dem Login kopieren
Nach dem Login kopieren
  • ComponentDidMount(): Wird aufgerufen, nachdem die Komponente zum ersten Mal im DOM gemountet wurde. Ideal zum Abrufen von Daten oder zum Initialisieren von Abonnements.
componentDidMount() {
  this.fetchData();
}
Nach dem Login kopieren
Nach dem Login kopieren

B. Aktualisierung

componentDidUpdate(prevProps, prevState): Wird nach den Komponentenaktualisierungen aufgerufen. Nützlich, um auf Änderungen in Requisiten oder Zustand zu reagieren. Stellen Sie sicher, dass Sie nach Änderungen suchen, um Endlosschleifen zu vermeiden.

componentDidUpdate(prevProps) {
  if (this.props.id !== prevProps.id) {
    this.fetchData();
  }
}
Nach dem Login kopieren
Nach dem Login kopieren

C. Absteigen

componentWillUnmount(): Wird direkt vor dem Entfernen der Komponente aus dem DOM aufgerufen. Nützlich zum Bereinigen von Abonnements, Timern oder anderen Vorgängen, die bereinigt werden müssen.

componentWillUnmount() {
  this.cleanup();
}
Nach dem Login kopieren
Nach dem Login kopieren

D. Fehlerbehandlung

componentDidCatch(error, info): Wird zum Abfangen von Fehlern in untergeordneten Komponenten verwendet. Nützlich für die zentrale Fehlerbehandlung.

componentDidCatch(error, info) {
  logErrorToMyService(error, info);
}
Nach dem Login kopieren
Nach dem Login kopieren

2. Einführung in React Hooks

React Hooks sind eine Funktion, die es uns ermöglicht, Zustands- und Lebenszyklusmethoden zu verwenden, ohne Klassenkomponenten zu schreiben. Hier sind einige der am häufigsten verwendeten Haken:

A. useState()

Wird verwendet, um Funktionskomponenten einen Status hinzuzufügen. Diese Funktion gibt ein Paar zurück: den aktuellen Status und eine Funktion zum Aktualisieren.

import React, { useState } from 'react';

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

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};
Nach dem Login kopieren
Nach dem Login kopieren

B. useEffect()

useEffect ermöglicht es uns, Nebenwirkungen in Funktionskomponenten auszuführen. Es kombiniert die Funktionalitäten von ComponentDidMount, ComponentDidUpdate und ComponentWillUnmount.

  • Beispiel 1: useEffect mit einem leeren Array ([]) Wenn useEffect mit einem leeren Array als Abhängigkeit verwendet wird, wird der Effekt nur einmal ausgeführt, nachdem die Komponente gemountet wurde.
constructor(props) {
  super(props);
  this.state = { count: 0 };
}
Nach dem Login kopieren
Nach dem Login kopieren
  • Beispiel 2: useEffect ohne Abhängigkeitsarray Wenn useEffect ohne Abhängigkeitsarray bereitgestellt wird, wird der Effekt jedes Mal ausgeführt, wenn die Komponente erneut gerendert wird.
componentDidMount() {
  this.fetchData();
}
Nach dem Login kopieren
Nach dem Login kopieren
  • Beispiel 3: useEffect mit einem Array von Abhängigkeiten Wenn Sie ein Array von Abhängigkeiten bereitstellen, wird der Effekt immer dann ausgeführt, wenn sich einer der Werte im Array ändert.
componentDidUpdate(prevProps) {
  if (this.props.id !== prevProps.id) {
    this.fetchData();
  }
}
Nach dem Login kopieren
Nach dem Login kopieren

C. useContext()

Der useContext Hook wird verwendet, um auf den Kontext in Funktionskomponenten zuzugreifen. Dies ist besonders nützlich, um globale Daten wie Themen oder Benutzerauthentifizierungsstatus ohne Drilling zu teilen.

Beispiel: Theming mit useContext
In diesem Beispiel erstellen wir einen einfachen Themenkontext, der es uns ermöglicht, zwischen hellen und dunklen Themen zu wechseln.

1. Erstellen Sie den Themenkontext
Zuerst erstellen wir einen Kontext für das Thema.

componentWillUnmount() {
  this.cleanup();
}
Nach dem Login kopieren
Nach dem Login kopieren

2. Nutzen Sie den Themenkontext
Als Nächstes können wir eine Komponente erstellen, die den Themenkontext nutzt, um Stile anzuwenden und eine Schaltfläche zum Umschalten des Themas bereitzustellen.

componentDidCatch(error, info) {
  logErrorToMyService(error, info);
}
Nach dem Login kopieren
Nach dem Login kopieren

3. Verpacken Sie die Anwendung mit dem Theme-Anbieter
Schließlich verpacken wir unsere Anwendung (oder einen Teil davon) mit dem ThemeProvider, um den untergeordneten Elementen den Themenkontext bereitzustellen.

import React, { useState } from 'react';

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

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};
Nach dem Login kopieren
Nach dem Login kopieren

Erklärung

  • Theme-Kontext-Erstellung: Wir erstellen einen ThemeContext mit createContext und einer ThemeProvider-Komponente, die den aktuellen Theme-Status verwaltet und eine Funktion zum Umschalten bereitstellt.

  • Kontextverbrauch: In der ThemedComponent verwenden wir useContext(ThemeContext), um auf das aktuelle Thema und die Umschaltfunktion zuzugreifen. Diese Komponente rendert unterschiedliche Inhalte basierend auf dem aktuellen Thema und enthält eine Schaltfläche zum Umschalten.

  • Anwendungsstruktur: Die gesamte Anwendung (oder ein Teil davon) ist in den ThemeProvider eingeschlossen, sodass jede untergeordnete Komponente auf den Themenkontext zugreifen kann.

D. useMemo() und useCallback()

  • useMemo(): Zwischenspeichert das Ergebnis aufwendiger Berechnungen, um eine Neuberechnung bei jedem Rendern zu vermeiden.
import React, { useState, useEffect } from 'react';

const FetchDataOnce = () => {
  const [data, setData] = useState([]);

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

    fetchData();
  }, []); // Effect runs only once when the component mounts

  return (
    <ul>
      {data.map(item => (
        <li key={item.id}>{item.name}</li>
      ))}
    </ul>
  );
};
Nach dem Login kopieren
  • useCallback(): Zwischenspeichert Funktionen, um zu vermeiden, dass sie bei jedem Rendern neu erstellt werden.
import React, { useState, useEffect } from 'react';

const CountComponent = () => {
  const [count, setCount] = useState(0);

  useEffect(() => {
    console.log(`Count updated: ${count}`);

    const fetchData = async () => {
      const response = await fetch(`https://api.example.com/data/${count}`);
      const result = await response.json();
      console.log(result);
    };

    fetchData();
  }); // Effect runs every time the component renders

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
};
Nach dem Login kopieren

3. Vorteile der Verwendung von Hooks

Hooks bieten Flexibilität und die Möglichkeit, Logik zwischen Komponenten zu teilen, ohne Higher Order Components (HOCs) oder Render-Requisiten verwenden zu müssen. Zu den Vorteilen der Verwendung von Hooks gehören:

  • Einfachheit und Klarheit: Code wird sauberer und leichter lesbar.
  • Flexibilität: Logik kann in kleinere Funktionen unterteilt werden, die überall wiederverwendet werden können.
  • Reduzierte Komplexität: Vermeidet die Verwendung von Klassen und komplizierten Lebenszyklusmethoden.

Lebenszyklusmethoden und Hooks sind zwei wichtige Aspekte der React-Entwicklung. Wenn wir verstehen, wie beide Konzepte funktionieren, können wir effizientere und wartbarere Komponenten erstellen. Insbesondere Hooks eröffnen neue Möglichkeiten für die Entwicklung funktionaler Komponenten und verändern die Art und Weise, wie wir mit Zuständen und Nebenwirkungen interagieren.

Durch die Beherrschung von Lebenszyklusmethoden und Hooks können Sie robustere und reaktionsfähigere React-Anwendungen erstellen. Viel Spaß beim Codieren!

Das obige ist der detaillierte Inhalt vonReact Js Part Lifecycle-Methoden und Hooks in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage