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 Infobright-Installationsschritte

Inhaltsverzeichnis 1. Verwenden Sie den Befehl „r...

Vue-Anfängerhandbuch: Erstellen des ersten Vue-cli-Scaffolding-Programms

1. Vue – Das erste Vue-CLI-Programm Die Entwicklu...

Eine detaillierte Erklärung der subtilen Unterschiede zwischen Readonly und Disabled

Sowohl die Optionen „Nur lesen“ als auch „Deaktivi...

js zur Realisierung eines Web-Musikplayers

Dieser Artikel enthält einfachen HTML- und Musikp...

Zusammenfassung der mathematischen Symbole in Unicode

In der Mathematik, Physik und einigen wissenschaf...

MySQL-Transaktionskontrollfluss und ACID-Eigenschaften

Inhaltsverzeichnis 1. ACID-Eigenschaften Syntax d...

Teilen Sie 13 hervorragende Web-Wireframe-Design- und Produktionstools

Wenn Sie mit der Arbeit an einem Projekt beginnen...

MySQL-Konfiguration Master-Slave-Server (ein Master und mehrere Slaves)

Inhaltsverzeichnis Ideen Hostkonfiguration Konfig...

Vue implementiert einfache Kommentarfunktion

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

Detaillierte Erläuterung der Hochverfügbarkeitskonfiguration von Docker

Docker Compose Docker Compose unterteilt die verw...

17 JavaScript-Einzeiler

Inhaltsverzeichnis 1. DOM & BOM bezogen 1. Üb...

CentOS 8.0.1905 installiert ZABBIX Version 4.4 (verifiziert)

Zabbix Server-Umgebungsplattform Version: ZABBIX ...