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

Detaillierter Prozess zur Konfiguration von NIS in Centos7

Inhaltsverzeichnis Prinzip Vorbereitung der Netzw...

Einige kleine Methoden, die häufig in HTML-Seiten verwendet werden

Fügen Sie das Tag <Head> hinzu <meta http...

Webdesign-Dimensionen und Regeln für die Werbegestaltung auf Webseiten

1. Unter 800 x 600 gibt es keine horizontale Bild...

Detaillierte Erläuterung der Vue-Lebenszyklusfunktionen

Inhaltsverzeichnis Lebenszyklusfunktionen Allgeme...

Detaillierte Erklärung der HTML-Programmier-Tags und der Dokumentstruktur

Der Zweck der Verwendung von HTML zum Markieren v...

Welche Wissenssysteme brauchen Webdesigner?

Produktdesigner sind mit komplexen und großen Fert...

Eine Fallstudie zur MySQL-Optimierung

1. Hintergrund Auf jeder OLTP-Datenbankinstanz vo...

Umfassendes Verständnis der HTML-Grundstruktur

Einführung in HTML HyperText-Auszeichnungssprache...

SQL Left Join und Right Join - Prinzip und Beispielanalyse

Es gibt zwei Tabellen, und die Datensätze in Tabe...

Vue implementiert das Hinzufügen eines Wasserzeicheneffekts zur Seite

Als ich kürzlich an einem Projekt arbeitete, wurd...