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

MySQL-Passwort ist korrekt, aber keine lokale Anmeldung möglich -1045

MySQL-Passwort ist korrekt, aber keine lokale Anm...

W3C Tutorial (6): W3C CSS Aktivitäten

Ein Stylesheet beschreibt, wie ein Dokument angez...

Detaillierte Analyse des MySQL Master-Slave-Verzögerungsphänomens und -prinzips

1. Phänomen Am frühen Morgen wurde einer Online-T...

Detaillierte Erklärung zu Padding und Abkürzungen im CSS-Boxmodell

Wie oben gezeigt, sind Füllwerte zusammengesetzte...

Sehr detaillierte JavaScript-Implementierung eines Webseiten-Karussells

Inhaltsverzeichnis Erstellen von HTML-Seiten Impl...

So verwenden Sie „not in“ zur Optimierung von MySql

Als ich kürzlich in einem Projekt eine Auswahlabf...

Vue-CLI - Aufzeichnung der Schritte zur mehrseitigen Verzeichnisverpackung

Seitenverzeichnisstruktur Beachten Sie, dass Sie ...

JavaScript fügt Prototyp-Methodenimplementierung für integrierte Objekte hinzu

Die Reihenfolge, in der Objekte Methoden aufrufen...

Kostenloses Tool zur Überprüfung der Richtigkeit von HTML-, CSS- und RSS-Feeds

Ein Trick zum Umgang mit dieser Art von Fehlern be...

Detailliertes Beispiel für das Linux-Allround-Systemüberwachungstool dstat

Umfassendes Systemüberwachungstool dstat dstat is...

Eine kurze Diskussion über die Docker-Compose-Netzwerkeinstellungen

Tutorial zur Netzwerknutzung Offizielle Website d...

Tutorial zur Installation von Android Studio unter Ubuntu 19 und darunter

Aus Erfahrung weiß man, dass es eine gute Angewoh...

MySQL verwendet Variablen, um verschiedene Sortierungen zu implementieren

Kerncode -- Im Folgenden werde ich die Implementi...