Heim > Web-Frontend > js-Tutorial > Von useEffect zu React Query: Modernisieren Sie Ihr Datenmanagement in React

Von useEffect zu React Query: Modernisieren Sie Ihr Datenmanagement in React

Mary-Kate Olsen
Freigeben: 2024-11-22 07:50:17
Original
825 Leute haben es durchsucht

From useEffect to React Query: Modernizing your data management in react

In der modernen Webentwicklungslandschaft ist die Entwicklung schneller, reaktionsfähiger Anwendungen, die serverseitige Daten effizient verwalten, wichtiger denn je. Herkömmliche Methoden zum Abrufen von Daten in React, insbesondere die Verwendung von useEffect, können häufig zu komplexer Statusverwaltung, sich wiederholendem Code und Leistungsproblemen führen. Mit React Query können Entwickler Funktionen wie automatisches Caching, Hintergrundabruf und integrierte Mutationsunterstützung nutzen und gleichzeitig den Boilerplate-Code minimieren.

In diesem Artikel erkunden wir die Kernkonzepte von React Query, zeigen, wie wir es in unsere Projekte integrieren und heben seine leistungsstarken Funktionen hervor, die Ihren Entwicklungsworkflow erheblich verbessern können. Machen Sie sich bereit, die Art und Weise, wie Sie Daten in Ihren React-Anwendungen abrufen, zwischenspeichern und synchronisieren, zu verändern!

Warum sollten wir aufhören, Daten mithilfe von React Effects abzurufen?

Während die Verwendung von useEffect von React zum Datenabruf vollkommen zulässig ist, gibt es mehrere Gründe, darüber nachzudenken, davon abzuweichen und stattdessen eine dedizierte Datenabrufbibliothek wie React Query zu verwenden (sogar die React-Dokumentation schlägt die Verwendung von React Query zum Datenabruf vor).

Einige Nachteile der Verwendung von Effekten zum Datenabruf:

  • Leistungsprobleme: „Netzwerkwasserfälle“ und unnötiges erneutes Abrufen sind einige der häufigsten Probleme bei der Verwendung von React useEffect und können zu einer sehr schlechten Benutzererfahrung führen.
  • Fehlendes integriertes Caching: useEffect bietet kein sofort einsatzbereites Caching, was zu wiederholten Netzwerkanfragen und komplexen Lösungen zur Verwaltung führt.
  • Komplexität in der Statusverwaltung: Die manuelle Verwaltung von Lade-, Fehler- und Datenzuständen mit useEffect kann zu umständlichem und fehleranfälligem Code führen, insbesondere wenn die Anwendung skaliert.
  • Effekte werden nicht auf dem Server ausgeführt: Daten sind möglicherweise nicht verfügbar, wenn die Komponente zum ersten Mal gerendert wird.

So funktioniert React Query

React Query ist eine leistungsstarke Bibliothek, die das Abrufen von Daten und die Statusverwaltung in React-Anwendungen vereinfacht. Hier ist eine Aufschlüsselung der Funktionsweise von React Query:

1. Daten abfragen

  • useQuery-Hook: Der Kern von React Query ist der useQuery-Hook. Mit diesem Hook können Sie Daten von einem Server abrufen und deren Status (Laden, Fehler, Daten…) automatisch verwalten.
  • Abfrageschlüssel: Jede Abfrage wird durch einen eindeutigen Schlüssel (eine oder mehrere Zeichenfolgen in einem Array) identifiziert. Dieser Schlüssel hilft React Query beim Zwischenspeichern und effizienten Verwalten der Daten.

2. Caching

  • Automatisches Caching: Wenn Daten abgerufen werden, werden sie von React Query zwischengespeichert. Wenn dieselbe Abfrage erneut durchgeführt wird, werden Daten aus dem Cache abgerufen, anstatt eine neue Netzwerkanfrage zu stellen.
  • Verwaltung veralteter Daten: Sie können festlegen, wie lange Daten als frisch (nicht veraltet) gelten sollen. Nach diesem Zeitraum ruft React Query die Daten im Hintergrund erneut ab.

3. Neuabruf im Hintergrund

React Query ruft Daten in mehreren Szenarien automatisch erneut ab, um die Daten aktuell und synchron zu halten. Hier sind die häufigsten Situationen, in denen dies passiert:

  • Montage von Komponenten: Wenn eine Komponente gemountet wird und die Daten als veraltet gelten.
  • Fensterfokus: Immer wenn das Fenster den Fokus wiedererlangt, z. B. wenn ein Benutzer zwischen Registerkarten oder Fenstern wechselt und zu dem Fenster mit Ihrer Anwendung zurückkehrt.
  • Wiederherstellung der Netzwerkverbindung: Wenn die Netzwerkverbindung verloren geht und später wiederhergestellt wird.

4. Datenmutationen

  • useMutation Hook: bezieht sich auf den Prozess des Erstellens, Aktualisierens oder Löschens von Daten auf dem Server. Im Gegensatz zur Abfrage, bei der Daten abgerufen werden, wird useMutation verwendet, um Daten zu ändern und damit verbundene Nebenwirkungen zu verwalten.
  • Optimistische Updates: Wenn ein Benutzer eine Aktion ausführt, die Daten verändert, wird die Benutzeroberfläche sofort aktualisiert, um das erwartete Ergebnis dieser Aktion widerzuspiegeln und so das Benutzererlebnis zu verbessern.

5. Abfrageungültigmachung

  • Mit React Query können Sie eine zwischengespeicherte Abfrage als „veraltet“ markieren, sodass sie beim nächsten Zugriff erneut abgerufen wird. Dies ist wichtig, um sicherzustellen, dass die Benutzeroberfläche nach bestimmten Aktionen, wie Mutationen oder Benutzerinteraktionen, die aktuellsten Daten vom Server widerspiegelt.

6. Automatische Garbage Collection

  • React Query entfernt Abfragen automatisch aus seinem Cache, wenn sie nicht mehr verwendet werden und für einen bestimmten Zeitraum inaktiv waren. Dieser Prozess hilft, Speicherlecks zu verhindern und stellt sicher, dass nur relevante Daten im Cache verbleiben.

7. DevTools

  • React Query DevTools ist ein optionales, benutzerfreundliches Tool für React Query, das uns Entwicklern beim Debuggen und Überwachen von Abfragen, Mutationen und dem Cache-Status hilft. Es bietet eine visuelle Schnittstelle, um die Details unserer Abfragen zu überprüfen und zu sehen, wie React Query ihren Lebenszyklus verwaltet.

8. Serverseitiges Rendering (SSR)

  • React Query unterstützt Server-Side Rendering (SSR), das dabei hilft, Daten vorab auf dem Server abzurufen, bevor sie an den Client gesendet werden. Dies beschleunigt das Laden der ersten Seite und kann die SEO verbessern, indem Suchmaschinen eine vollständig gerenderte Seite bereitgestellt wird.

So implementieren Sie React Query

Hier finden Sie eine Schritt-für-Schritt-Anleitung zur Verwendung von React Query zum Verwalten des Abrufens, Zwischenspeicherns, Aktualisierens und Synchronisierens von Serverdaten in einer React-App.

Schritt 1: React Query installieren

Fügen Sie zunächst React Query zu Ihrem Projekt hinzu:

npm install @tanstack/react-query
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 2: Richten Sie QueryClientProvider ein

Um React Query zu konfigurieren, binden Sie Ihre App in einen QueryClientProvider ein. Dieser Anbieter verwendet eine QueryClient-Instanz, die Caching, Hintergrundabrufe und Aktualisierungen verwaltet.

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <YourComponent />
    </QueryClientProvider>
  );
}
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 3: Daten mit useQuery abrufen

Der useQuery-Hook ruft Daten von einer API ab, speichert sie automatisch zwischen und verarbeitet Zustände wie Laden und Fehler.

npm install @tanstack/react-query
Nach dem Login kopieren
Nach dem Login kopieren
  • Schlüssel (['todos']): Jede useQuery erfordert einen eindeutigen Schlüssel zum Identifizieren und Zwischenspeichern von Daten.
  • Abfragefunktion (fetchTodos): Diese asynchrone Funktion ruft die benötigten Daten von einer API ab.

Schritt 4: Behandeln Sie Datenmutationen mit useMutation

Der useMutation-Hook wird zum Erstellen, Aktualisieren oder Löschen von Daten verwendet. Sobald eine Mutation erfolgreich ist, können Sie die Abfrageungültigmachung verwenden, um relevante Daten erneut abzurufen und den Status Ihrer App auf dem neuesten Stand zu halten.

import { QueryClient, QueryClientProvider } from '@tanstack/react-query';

const queryClient = new QueryClient();

function App() {
  return (
    <QueryClientProvider client={queryClient}>
      <YourComponent />
    </QueryClientProvider>
  );
}
Nach dem Login kopieren
Nach dem Login kopieren
  • Mutationsfunktion (addTodo): Diese asynchrone Funktion ändert den Serverstatus.
  • onSuccess: Nach einer Mutation macht dieser Rückruf die ['todos']-Abfrage ungültig, ruft die Daten erneut ab und aktualisiert sie, um die neu hinzugefügte todo anzuzeigen.

Schritt 5: Optionale DevTools zum Debuggen

React Query DevTools kann Ihnen dabei helfen, Abfragen, Cache-Status und mehr während der Entwicklung zu überwachen:

import { useQuery } from '@tanstack/react-query';

function YourComponent() {
  const { data, error, isLoading } = useQuery(['todos'], fetchTodos);

  if (isLoading) return <p>Loading...</p>;
  if (error) return <p>Error: {error.message}</p>;

  return (
    <div>
      {data.map((todo) => (
        <p key={todo.id}>{todo.title}</p>
      ))}
    </div>
  );
}

// Sample fetch function
const fetchTodos = async () => {
  const response = await fetch('/api/todos');
  return response.json();
};
Nach dem Login kopieren

Dann fügen Sie zu Ihrer App:

import { useMutation, useQueryClient } from '@tanstack/react-query';

function TodoAdder() {
  const queryClient = useQueryClient();
  const addTodoMutation = useMutation(addTodo, {
    onSuccess: () => {
      queryClient.invalidateQueries(['todos']);
    },
  });

  return (
    <button onClick={() => addTodoMutation.mutate({ title: 'New Todo' })}>
      Add Todo
    </button>
  );
}

const addTodo = async (newTodo) => {
  const response = await fetch('/api/todos', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(newTodo),
  });
  return response.json();
};
Nach dem Login kopieren

Abschluss

Das Ersetzen von useEffect durch React Query für den Datenabruf und Nebenwirkungen ist eine großartige Empfehlung für die Erstellung moderner React-Anwendungen.

React Query verändert die Art und Weise, wie Sie serverseitige Daten in React-Apps verarbeiten, und bietet einen deklarativeren Ansatz, der die komplexe Zustandsverwaltung vereinfacht. Durch die Nutzung seiner leistungsstarken Funktionen wie Caching, Hintergrundsynchronisierung und Abfrageungültigmachung können Sie äußerst reaktionsfähige und leistungsstarke Anwendungen erstellen. Und nicht zuletzt erleichtert die Integration von React Query DevTools die Überwachung und das Debuggen und stellt sicher, dass der Datenfluss Ihrer App reibungslos und transparent ist.

Ob Sie eine einfache Single-Page-App oder eine komplexe datenintensive Anwendung erstellen, mit React Query können Sie mit weniger Aufwand schnellere, intelligentere und benutzerfreundlichere Apps erstellen.

Das obige ist der detaillierte Inhalt vonVon useEffect zu React Query: Modernisieren Sie Ihr Datenmanagement in React. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
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