Erklärung der Funktionsweise und Verwendung von Redux

Erklärung der Funktionsweise und Verwendung von Redux

1. Was ist Redux?

React ist nur eine Abstraktionsschicht für das DOM, keine vollständige Lösung für Webanwendungen. React ist lediglich ein leichtes View-Layer-Framework. Wenn Sie eine große Anwendung erstellen möchten, müssen Sie es mit dem View-Layer-Framework Redux verwenden. Es wird hauptsächlich in Szenarien mit mehreren Interaktionen und mehreren Datenquellen verwendet. Es ist nicht notwendig, es zu verwenden, aber Sie müssen wissen, wie man es verwendet.

2. Das Redux-Prinzip

Das Prinzip von Redux wird zunächst anhand eines Bildes erklärt, das leicht verständlich ist

Zuerst führt der Benutzer eine Aktion aus.

speichern.Versand(Aktion);

Dann ruft der Store automatisch den Reducer auf und übergibt zwei Parameter: den aktuellen Status und die empfangene Aktion. Der Reducer gibt den neuen Status zurück.

let nächsterZustand = todoApp(vorherigerZustand, Aktion);

Sobald sich der Status ändert, ruft der Store die Abhörfunktion auf.

//Abhörfunktion festlegen store.subscribe(listener);

Der Listener kann den aktuellen Status über store.getState() abrufen. Wenn Sie React verwenden, kann dies eine erneute Darstellung der Ansicht auslösen.

Funktion Listener () {
  Lassen Sie newState = store.getState();
  Komponente.setState(newState);   
}

3. Wie verwende ich Redux?

(1). Installieren Sie Redux, erstellen Sie einen Redux-Ordner und erstellen Sie store.js

Diese Datei wird speziell zum Freigeben eines Store-Objekts verwendet. Die gesamte Anwendung hat nur ein Store-Objekt.

Installieren Sie Redux: yarn add redux / npm install redux

//createStore einführen, das speziell zum Erstellen des Core Store-Objekts in Redux verwendet wird. importiere {createStore, applyMiddleware} von 'redux'.
//Stellen Sie den Reducer vor, der die Count-Komponente bedient
importiere countReducer aus './count_reducer'
//Führen Sie Redux-Thunk ein, um asynchrone Aktionen zu unterstützen
Thunk von „Redux-Thunk“ importieren
//Den Laden freilegen  
//applyMiddleware ist die mittlere Position mit Thunk
exportiere standardmäßig createStore(countReducer,applyMiddleware(thunk))

(2) Erstellen Sie reducers.js

  • 1. Mit dieser Datei wird ein Reducer erstellt, der die Count-Komponente bedient. Das Wesentliche eines Reducers ist eine Funktion
  • 2. Die Reducer-Funktion erhält zwei Parameter: den vorherigen Status (preState) und das Aktionsobjekt (action).
const initState = 0 //Initialisierungsstatus exportiere Standardfunktion countReducer(preState=initState,action){
	// Konsole.log(preState);
	//Vom Aktionsobjekt abrufen: Typ, Daten
	const {Typ, Daten} = Aktion
	//Entscheiden Sie, wie die Daten basierend auf dem Typschalter (Typ) verarbeitet werden sollen {
		Fall 'Inkrement': //wenn es hinzugefügt werden soll, returniere preState + Daten
		case 'decrement': //Wenn es eine Verringerung ist, returniere preState - data
		Standard:
			Vorstatus zurückgeben
	}
}

(3) Einführung von store.subscribe

Verwenden Sie hauptsächlich das Abonnieren, um jede Änderung im Geschäft zu überwachen

// öffentlicher index.js
Store aus „./redux/store“ importieren

//subscribe aktualisiert die Daten, wenn sich die Daten im Store ändern. Wenn Sie es hier schreiben, wird der globale store.subscribe(()=>{
	ReactDOM.render(<App/>,document.getElementById('root'))
})

(4) Einführung in react-redux

react-redux ist eine vom Autor von Redux gekapselte Bibliothek. Es handelt sich um ein Drittanbietermodul, das Redux weiter vereinfacht und einige zusätzliche APIs bereitstellt (wie z. B. Provider, Connect usw.). Durch die Verwendung können wir unseren Code besser organisieren und verwalten und die Verwendung von Redux in React bequemer gestalten.

react-redux herunterladen

Zähldatei erstellen

//Count-UI-Komponente importieren importiere CountUI von '../../components/Count'

//Führen Sie Connect ein, um UI-Komponenten und Redux zu verbinden
importiere {connect} von 'react-redux'

-------------------------------------------------------------
/* 
	1. Die Funktion mapStateToProps gibt ein Objekt zurück;
	2. Der Schlüssel im zurückgegebenen Objekt wird als Schlüssel verwendet, der an die UI-Komponenteneigenschaften übergeben wird, und der Wert wird als Wert verwendet, der an die UI-Komponenteneigenschaften übergeben wird
	3.mapStateToProps wird verwendet, um den Status zu übergeben*/
Funktion mapStateToProps(Zustand){
	returniere {Anzahl:Zustand}
}
-----------------------------------------------------------------
/* 
	1. Die Funktion mapDispatchToProps gibt ein Objekt zurück;
	2. Der Schlüssel im zurückgegebenen Objekt wird als Schlüssel verwendet, der an die UI-Komponenteneigenschaften übergeben wird, und der Wert wird als Wert verwendet, der an die UI-Komponenteneigenschaften übergeben wird
	3.mapDispatchToProps wird verwendet, um die Operationsstatusmethode zu übergeben*/
Funktion mapDispatchToProps(dispatch){
	zurückkehren {
		jia:Nummer => Versand(ErstelleIncrementAction(Nummer)),
		jian:Nummer => Versand(erstelleDekrementaktion(Nummer)),
		jiaAsync:(Zahl,Zeit) => dispatch(createIncrementAsyncAction(Zahl,Zeit)),
	}
}
//Verwenden Sie connect()(), um eine Count-Containerkomponente zu erstellen und verfügbar zu machen. Exportieren Sie standardmäßig connect(mapStateToProps,mapDispatchToProps)(CountUI).
//Verbesserte Standardverbindung für den Export(
	Zustand => ({Anzahl:Zustand}),
	
	//Allgemeines Schreiben von mapDispatchToProps /* dispatch => ({
		jia:Nummer => Versand(ErstelleIncrementAction(Nummer)),
		jian:Nummer => Versand(erstelleDekrementaktion(Nummer)),
		jiaAsync:(Zahl,Zeit) => dispatch(createIncrementAsyncAction(Zahl,Zeit)),
	}) */

	//Abkürzung für mapDispatchToProps {
		jia:createIncrementAction,
		jian:ErstelleDekrementAktion,
		jiaAsync:createIncrementAsyncAction,
	}
)(Zählen)


Aktionsobjekte generieren und separat verfügbar machen

/* 
	Diese Datei wird speziell zum Generieren von Aktionsobjekten für die Count-Komponente verwendet*/
importiere {INCREMENT,DECREMENT} von '../constant'

//Synchronisierte Aktion bedeutet, dass der Wert der Aktion ein allgemeines Objekt vom Typ Object export const increment = data => ({type:INCREMENT,data}) ist.
exportiere const decrement = Daten => ({Typ:DECREMENT,Daten})

//Asynchrone Aktion bedeutet, dass der Wert der Aktion eine Funktion ist. Asynchrone Aktion ruft normalerweise synchrone Aktion auf, aber asynchrone Aktion ist nicht erforderlich.
export const incrementAsync = (Daten, Zeit) => {
	Rückkehr (Versand) => {
		setzeTimeout(()=>{
			Versand(Inkrement(Daten))
		},Zeit)
	}
}

Damit schließen wir diesen Artikel zum Funktionsprinzip und zur Verwendung von Redux ab. Ich hoffe, dass es für jedermanns Studium hilfreich sein wird, und ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung der Verwendung und Prinzipanalyse von Connect in React-Redux
  • Detaillierte Erklärung des JavaScript-Statuscontainers Redux
  • Verstehen Sie die anfängliche Verwendung von Redux in React in einem Artikel

<<:  Einige einfache Implementierungscodes des Formularelements nehmen die Registrierung als Beispiel

>>:  SQL IDENTITY_INSERT-Fallstudie

Artikel empfehlen

Optimierungsanalyse der Limit-Abfrage in MySQL-Optimierungstechniken

Vorwort Im realen Geschäftsleben ist Paging eine ...

Ein paar Dinge zu favicon.ico (am besten im Stammverzeichnis ablegen)

Öffnen Sie eine beliebige Webseite, zum Beispiel ...

Detaillierte Schritte zum Löschen von Umgebungsvariablen in Linux

Wie lösche ich Umgebungsvariablen unter Linux? Ve...

Ausführliche Erklärung des Binlogs in MySQL 8.0

1 Einleitung Das Binärprotokoll zeichnet SQL-Anwe...

Zusammenfassung der Linux-Benutzergruppen und -Berechtigungen

Benutzergruppen Unter Linux muss jeder Benutzer e...

Beispiel für eine Formatierungsmethode für Datum und Uhrzeit in js

js Datums-/Zeitformat Konvertieren Sie Datum und ...

Detaillierte Einführung in Protokolle im Linux-System

Inhaltsverzeichnis 1. Logbezogene Dienste 2. Geme...

So handhaben Sie gleichzeitige Aktualisierungen von MySQL-Daten

Wird UPDATE gesperrt? Wird die SQL-Anweisung gesp...

Erfahren Sie, wie Sie den JVM-Speicher von Tomcat über JConsoler überwachen

Inhaltsverzeichnis 1. So überwachen Sie Tomcat 2....

Detaillierte Erklärung der Set-Datenstruktur von JavaScript

Inhaltsverzeichnis 1. Was ist Set 2. Konstruktor ...

Oberflächliches Webdesign

<br />Ich war schon immer der Meinung, dass ...

Detaillierte Erläuterung der Verwendung des gcc-Befehls unter Linux

Inhaltsverzeichnis 1. Vorverarbeitung 2. Zusammen...

Häufig verwendete JS-Funktionsmethoden im Frontend

Inhaltsverzeichnis 1. E-Mail 2. Mobiltelefonnumme...

Reines js, um den Effekt eines Karussells zu erzielen

In diesem Artikel wird der spezifische Code von j...