Redux - dies ist eine beliebte JavaScript-Bibliothek zum Verwalten des Anwendungsstatus. Basierend auf der Idee von Flux bietet Redux einen einfachen und vorhersehbaren Datenfluss und ist damit die ideale Wahl für die Erstellung skalierbarer und leicht zu testender Anwendungen.
Die Grundidee von Redux besteht darin, dass der Status der gesamten Anwendung in einem einzigen Objekt gespeichert wird, das als «Store» bezeichnet wird. Anwendungskomponenten kommunizieren über Aktionen und Reducer mit dem Repository.
Wenn eine Komponente eine Aktion sendet, überträgt sie sie an den Tresor. Im Gegenzug bearbeiten die Redner die Aktion und geben einen neuen Zustand zurück. Dadurch können Sie den Anwendungsstatus aktualisieren, ohne die Komponenten direkt zu ändern.
Redux ist ein Framework-unabhängiges Werkzeug, daher kann es mit React, Angular, Vue und anderen gängigen Frameworks verwendet werden. Redux unterstützt auch eine Entwicklungsumgebung namens DevTools, mit der Sie den Anwendungsstatus überwachen, zurücksetzen und wiederherstellen können.
Die Grundprinzipien der Redux-Schaltung
Die Grundidee des Redux-Schemas besteht darin, ein einzelnes globales Zustandsobjekt zu haben, das als store. Der gesamte Anwendungscode hat nur Zugriff auf dieses Objekt, und alle Zustandsänderungen werden durch Versand vorgenommen actions - objekte, die genau beschreiben, was passiert ist (z. B. "Element zur Liste hinzufügen", "Feldwert ändern").
Der Zustand in redux wird als Objektbaum dargestellt, genannt state. Jedes Mal, wenn eine Aktion gesendet wird, wird durch Anwenden eines neuen Status ein neuer Status erstellt reducer - eine Funktion, die den aktuellen Status und die action annimmt und einen neuen Status zurückgibt. Es ist wichtig zu beachten, dass der Reducer sein sollte saubere Funktion: Es sollte den aktuellen Status nicht direkt ändern, sondern nur einen neuen Status basierend auf den Eingaben erstellen.
Eines der wichtigsten Prinzipien von redux – unveränderlichkeit des Zustands. Dies bedeutet, dass der Status nach der Erstellung nicht direkt geändert werden kann. Stattdessen wird jedes Mal, wenn sich der Status ändert, ein neues Objekt erstellt, das die Änderungen enthält. Dies macht es einfacher, Änderungen zu verfolgen und Stornierungs- und Rückgabemechanismen zu implementieren.
Ein weiteres wichtiges Redux-Prinzip – unidirektionaler Datenfluss. Alle Zustandsänderungen treten nur über actions und reducers auf. Anwendungskomponenten können über eine Funktion auf den aktuellen Status zugreifen getState. und sie können actions disponieren, um den Status zu ändern. Sie können den Zustand jedoch nicht direkt ändern oder reducers aufrufen.
Die Verwendung des Redux-Schemas ermöglicht eine einfachere Verwaltung des Anwendungsstatus, macht es vorhersehbarer und testanfälliger. Es verbessert auch die Skalierbarkeit und erleichtert das Nachverfolgen von Statusänderungen.
Hauptkomponenten einer Redux-Schaltung
Store - die zentrale Komponente der Redux-Schaltung. Dies ist ein Objekt, das den gesamten Anwendungsstatus enthält. Seine Hauptaufgabe besteht darin, den Status zu speichern und zu aktualisieren und über spezielle Methoden darauf zuzugreifen.
Actions - ereignisse, die in der App auftreten. Sie beschreiben etwas, das passiert ist und welche Veränderung in einem Zustand vorgenommen werden muss. Actions werden als Objekte mit einer bestimmten Struktur dargestellt, die den Aktivitätstyp und zusätzliche Daten enthält.
Reducers - funktionen, die Actions behandeln und den Anwendungsstatus ändern. Jeder Reducer ist für einen bestimmten Teil des Zustands verantwortlich und führt die gewünschten Änderungen basierend auf den resultierenden Actions durch. Dabei können Reducer den Status nicht direkt ändern, sondern nur neue Versionen erstellen, wodurch sie vorhersehbar und leicht zu testen sind.
Middleware - zusätzliche Komponenten, mit denen Sie das Verhalten der Redux-Schaltung ändern können. Sie werden für Logging, asynchrone Operationen, Routing und andere Aufgaben verwendet. Middleware wird als Funktionen dargestellt, die den Store-Eingang übernehmen und Actions behandeln, bevor sie in Reducers gelangen.
Zusammen bilden diese Komponenten ein Redux-Schema, das ein einheitliches Statusmanagement ermöglicht und die Entwicklung komplexer Anwendungen vereinfacht.
Aktionen im Redux-Schema
Aktionen in redux sind reine Funktionen, die als "Aktionsersteller" bezeichnet werden. Sie erstellen und geben Aktionsobjekte eines bestimmten Typs zurück, die bei Bedarf zusätzliche Daten enthalten. Aktionsersteller werden normalerweise während einer Benutzerinteraktion aufgerufen, z. B. durch Klicken auf Schaltflächen oder das Senden von Formularen.
Aktionen werden an Reducers übergeben, bei denen es sich um reine Funktionen handelt, die für die Verarbeitung von Aktionen und das Ändern des Anwendungszustands verantwortlich sind. Die Reduser übernehmen den aktuellen Status und die aktuelle Aktion und geben basierend auf diesen Daten einen neuen Status zurück. Sie bestimmen, was als Reaktion auf jede Aktion geschieht.
Aktionen in Redux haben eine strenge formale Definition. Sie müssen Objekte mit dem obligatorischen Feld "type" sein, das den Aktionstyp beschreibt. Dies kann eine Zeichenfolge oder ein Zeichen sein, z. B. "ADD_TODO" oder "FETCH_DATA". Zusätzliche Daten können dem Feld "payload" hinzugefügt werden, das alle Informationen enthält, die für die Verarbeitung der Aktion erforderlich sind.
Mithilfe von Aktionen können Sie den Verlauf von Änderungen am Anwendungsstatus leicht verfolgen. Sie vereinfachen auch das Testen, Modularität und Debuggen von Code. Alle Aktionen können vordefiniert und dokumentiert werden, wodurch die Entwicklung und Wartung der Anwendung vorhersehbarer und benutzerfreundlicher wird.
Speicher im Redux-Schema
Das Hauptprinzip des Speichers ist die Unveränderlichkeit des Zustands. Sie können den Status des Depots nicht direkt ändern, sondern stattdessen einen neuen Status erstellen und auf das Depot anwenden. Dazu wird eine spezielle Funktion verwendet - ein Reducer, der den aktuellen Status und die Aktion annimmt und einen neuen Status zurückgibt. Dabei bleibt der alte Zustand unverändert.
Der Speicher enthält auch Methoden zum Verwalten des Zustands. Mit der dispatch-Methode können Sie beispielsweise Aktionen an den Speicher senden, um den Status zu ändern. Mit der getState-Methode können Sie den aktuellen Speicherstatus abrufen. Es ist auch möglich, Statusänderungen mit der subscribe-Methode zu abonnieren.
In einem Redux-Schema kann der Speicher nicht direkt aus Komponenten geändert werden. Stattdessen werden Aktionen verwendet, die beschreiben, was in der Anwendung vor sich geht. Die Aktionen werden über die dispatch-Methode an den Speicher übergeben, und der Status ändert sich basierend auf ihnen.
Reduser im Redux-Schema
Reduser in einem Redux-Schema können als eine Reihe von "Fällen" oder "Fällen" dargestellt werden, in denen verschiedene Aktionen und entsprechende Statusänderungen definiert sind. Jeder Retuscher verarbeitet nur die Aktionen, die ihm entsprechen, und ändert den Status der Anwendung nicht direkt, sondern klont und ändert einen Teil davon. Dies ermöglicht die Erstellung unabhängiger und wiederverwendbarer Reduser.
Die Reduser im Redux-Schema werden als Funktionen beschrieben, die zwei Argumente annehmen - den vorherigen Zustand und die Aktion. Abhängig vom Aktivitätstyp führt die Funktion "Retuschierer" bestimmte Aktionen für den Status aus und gibt einen neuen Status zurück. Wenn die Aktion keine Zustandsänderung erfordert, gibt der Retuscher einfach den vorherigen Status ohne Änderung zurück.
Retuschierer in einer Redux-Schaltung haben ein wichtiges Merkmal - sie müssen reine Funktionen sein. Dies bedeutet, dass sie ein neues Zustandsobjekt zurückgeben müssen, anstatt es direkt zu ändern. Dieser Ansatz ermöglicht die Vorhersagbarkeit des Zustands und erleichtert das Debuggen und Testen von Code. Darüber hinaus haben reine Funktionen keine Nebenwirkungen und sind unabhängig von externen Daten, wodurch sie leicht zu verwenden und zu testen sind.
Das Redux-Schema verwendet den Kombinator combineReducers(), um die Retuschierer zu organisieren. Mit diesem Kombinator können Sie mehrere Editoren zusammenführen und ihre hierarchische Struktur erstellen. Jeder Retuscher ist für einen Teil des Anwendungsstatus verantwortlich und hat seinen eigenen eindeutigen Namen. Der combineReducers() -Kombinator erstellt einen Root-Retuscher, der alle anderen Retuscher kombiniert und für den allgemeinen Zustand der Anwendung verantwortlich ist.
| Redeuser | Handeln | Zustandsänderung |
|---|---|---|
| userReducer | LOGIN, LOGOUT | Ändern von Benutzerinformationen |
| productsReducer | ADD_PRODUCT, REMOVE_PRODUCT | Hinzufügen und Entfernen von Artikeln aus dem Warenkorb |
| cartReducer | UPDATE_CART | Aktualisieren der Papierkorbstatusinformationen |
Die folgende Tabelle enthält Beispiele für Reduser und ihre Aktionen. Der UserReducer ist dafür verantwortlich, die Benutzerinformationen in der Anwendung als Reaktion auf die LOGIN- und LOGOUT-Aktionen zu ändern. ProductsReducer ist verantwortlich für das Hinzufügen und Entfernen von Artikeln aus dem Warenkorb als Reaktion auf die Aktionen ADD_PRODUCT und REMOVE_PRODUCT. Der CartReducer ist verantwortlich für die Aktualisierung der Papierkorbstatusinformationen als Reaktion auf die UPDATE_CART-Aktion.
Anwenden des Redux-Schemas in Projekten
Das Redux-Schema ist zu einem der beliebtesten Tools für die Statusverwaltung in JavaScript-Anwendungen geworden. Die erfolgreiche Anwendung ermöglicht eine effizientere Datenverwaltung und vereinfacht die Entwicklung komplexer Projekte.
Redux kann in einer Vielzahl von Projekttypen verwendet werden, von kleinen Webanwendungen bis hin zu großen, skalierbaren Projekten. Dieses Schema ist besonders in Projekten nützlich, bei denen eine strenge Kontrolle des Anwendungsstatus und die Verwaltung von Änderungen erforderlich sind.
Mit redux können Sie sofort Statusupdates durchführen, ohne die Seite neu zu laden. Dadurch können Sie dynamische UI-Elemente, Animationen und vieles mehr implementieren, ohne die Anwendungsleistung zu beeinträchtigen.
Darüber hinaus erleichtert redux das Debuggen und Testen von Anwendungen. Durch den unidirektionalen Datenfluss ist es einfach, die Quelle von Statusänderungen zu verfolgen und Problempunkte zu isolieren. Mit Vorhersagbarkeit und kontinuierlichem Status können Sie zuverlässige Tests schreiben und Fehler im Code schnell finden.
Ein wichtiger Faktor bei der Verwendung von redux ist das Verständnis der Funktionsweise dieses Schemas und die korrekte Projektarchitektur. Eine klare Trennung von Status und Aktion sowie die Verwendung grundlegender Redux-Prinzipien ermöglichen die Erstellung zuverlässiger und flexibler Anwendungen.
Aufgrund seiner Popularität und Unterstützung in der Entwicklergemeinschaft verfügt redux über eine große Anzahl zusätzlicher Bibliotheken und Tools, die die Arbeit damit vereinfachen. Dies macht die Entwicklung mit Redux noch attraktiver und effizienter.
| Vorteile der Anwendung der Redux-Schaltung in Projekten: |
|---|
| Vereinfachte Verwaltung des Anwendungsstatus |
| Sofortige Statusaktualisierungen, ohne die Seite neu zu laden |
| Einfaches Debuggen und Testen von Anwendungen |
| Verständliche Funktions- und Architekturprinzipien von redux |
| Unterstützung und Entwicklung der Entwicklergemeinschaft |