Verstehen Sie die anfängliche Verwendung von Redux in React in einem Artikel

Verstehen Sie die anfängliche Verwendung von Redux in React in einem Artikel

Redux ist ein Plug-In zur Datenstatusverwaltung. Bei der Entwicklung komponentenbasierter SPA-Programme mit React oder Vue ist der Informationsaustausch zwischen Komponenten ein sehr großes Problem. Beispielsweise speichert der Client nach der Anmeldung des Benutzers die Benutzerinformationen (ID, Avatar usw.) und viele Komponenten des Systems verwenden diese Informationen. Bei der Verwendung dieser Informationen ist es sehr mühsam, sie jedes Mal erneut abzurufen. Daher benötigt jedes System eine Funktion zum Verwalten der gemeinsamen Informationen, die von mehreren Komponenten verwendet werden. Dies ist die Rolle von Redux.

Wenn Sie ein Entwickler sind, der noch nie mit Redux in Berührung gekommen ist, hoffe ich, dass Sie es sich geduldig ansehen können. Ich bin auch optimistisch in Bezug auf viele Blogs und fasse sie langsam selbst zusammen! ! ! ! Das ist besser, als wenn die Großen sie einzeln suchen würden.

importiere React, {Komponente, Fragment} von „react“;

//Klasse importimport { connect } von „react-redux“;

//Hook import { useSelector, useDispatch } von 'react-redux'

importiere { füge hinzu, lösche } von '../../redux/actions/count';


//Anzeigekomponente einhaken const CountItem = (props) => {
    // Dekonstruieren const {
        zählen,
        Flagge,
        hinzufügen,
        klar
    } = Requisiten
    zurückkehren (
        <>
            <h2>Aktuelle Summe: {count}</h2>
            <h3>Aktuelle Flagge: {flag ? 'true' : 'false'}</h3>
            <button onClick={add}>Klick +1</button>
            <button onClick={clear}>Löschen</button>
        </>
    )
}

//Containerkomponente einhaken const Count = () => {
    const count = useSelector(Zustand => Zustand.Summe)
    const flag = useSelector(Zustand => Zustand.flag)
    const dispatch = useDispatch()

    const countAdd = () => {
        Konsole.log(Typ hinzufügen)
        Versand(Hinzufügen(1))
    }

    const clearNum = () => {
        Versand (löschen ())
    }

    zurückgeben <CountItem count={Anzahl} flag={Flag} add={countAdd} clear={clearNum} />
}

Export-Standardanzahl



// Klasse Anzeigekomponente // Klasse Count erweitert Komponente {
// hinzufügen = () => {
// // Redux benachrichtigen
// diese.props.add(1);
// };
// löschen = () => {
// diese.props.clear();
// };
// rendern() {
// zurückkehren (
// <Fragment>
// <h2>Die aktuelle Summe ist: {this.props.count}</h2>
// <h3>Aktuelle Flagge: {this.props.flag ? 'true' : 'false'}</h3>
// <button onClick={this.add}>Klick +1</button>
// <button onClick={this.clear}>löschen</button>
// </Fragment>
// );
// }
// }

// Klasse Containerkomponente // Standardverbindung exportieren(
// // 1. Status// Status => ({ Anzahl: Status.Summe, Flagge: Status.FlagStatus }),
// // 2. Methoden // { hinzufügen, löschen }
// )(Zählen);

Die grundlegende Verwendung ist ungefähr so. Die Schlüsselmethode, die wir beim Hook verwenden, besteht darin, den Status von Redux mit useSelector zu verwenden und Reduce mit dispatch aufzurufen. In der Klassenkomponente wird connect verwendet, um den Status mit der Methode (Reduce) zu verknüpfen.

Die Schwierigkeit liegt hier in Reduce and State

Was bedeutet „Reduzieren“ hier?

Im obigen Code haben wir die Methoden add und clear verwendet. Wir erstellen eine neue JS-Datei, um diese beiden Methoden zu implementieren.

// Ein Aktionsobjekt für die Komponente „Count“ erstellen // Konstanten importieren import { ADD, CLEAR } from '../constant';

// Erstellen Sie eine Funktion zum Hinzufügen eines Aktionsobjekts export const add = data => ({
    Typ: ADD,
    Daten,
});

// Erstellen Sie eine Funktion zum Löschen des Aktionsobjekts export const clear = data => ({
    Typ: CLEAR,
    Daten,
});

Oben sind Konstanten vorhanden - dies dient der einheitlichen Verwaltung von Aktionstypen. Das Erstellen entsprechender Aktionsobjekte hilft bei der Modularisierung des Codes.
Fügen Sie es ein, erstellen Sie eine constant.js und fügen Sie es ein

export const ADD = "Hinzufügen";
export const CLEAR = "löschen";

An diesem Punkt ist unser Aktionsobjekt fast definiert und wir müssen den Reduzierer verwalten. Das heißt, Dispatch verteilt die oben genannten Aktionsobjekte, um Statusaktualisierungen durchzuführen

Im Reducer-Ordner definieren wir eine count.js

//Erstellen Sie einen Reducer für die Count-Komponente
// Reducer erhält zwei Parameter: preState des vorherigen Status, Aktionsobjekt Aktion

importiere { ADD, CLEAR } aus '../constant.js';

// Den Anfangszustand festlegen const initState = 0;

Exportiere Standardfunktion addReducer(preState = initState, action) {
    // Typ und Daten aus Aktion abrufen
    const { Typ, Daten } = Aktion;
    //Entscheiden Sie, wie die Daten basierend auf dem Typschalter (Typ) verarbeitet werden sollen {
        Fall hinzufügen:
            gibt PreState + Daten zurück;
        Fall KLAR:
            gebe 0 zurück;
        // Initialisierungsaktion Standard:
            Vorstatus zurückgeben;
    }
}

Die obige Methode muss Dispatch verwenden, um die Typverteilung aufzurufen (Hervorhebung hinzugefügt).

Die Verwendung ist hier abgeschlossen. Als Nächstes konfigurieren wir Redux für das React-Projekt.

Es ist nicht nötig, hier in umgekehrter Reihenfolge zu erzählen, da dies keinen Sinn ergibt.
Hier sind einige wichtige Konfigurationen
Konfiguration von store.js und Nutzung des globalen Stores

Erster Blick auf die globale Nutzung von Store
Umschließen Sie die App mit dem Provider unterhalb Ihrer Stammroute.

importiere React von „react“;
importiere ReactDOM von „react-dom“;
App aus „./App.jsx“ importieren;
Store aus „./redux/store“ importieren;
importiere { Provider } von „react-redux“;

ReactDOM.render(
    // Provider umschließt App, Zweck: allen untergeordneten Containerkomponenten der App den Empfang von Store-Informationen zu ermöglichen
    <Anbieter-Store={Store}>
        <App />
    </Anbieter>,
    document.getElementById('root')
);

Hier gibt es ein redux/store.js. Siehe den Code

// Das gesamte Dokument hat nur ein Store-Objekt. createStore erhält zwei Parameter, der erste ist der Statusbaum und der zweite die zu verarbeitende Aktion.
//applyMiddleware fasst die gesamte Middleware in einem Array zusammen und führt sie nacheinander aus. Dabei wird import { createStore, applyMiddleware } from 'redux'; asynchron verarbeitet.
//Middlewareimport thunk von „redux-thunk“;
//Alle Reducer zusammenfassen
importiere alle Reducers aus „./reducers/index“;
//Hier ist das Debugging-Tool von Google, spezifische Verwendung: Baidu import { composeWithDevTools } from 'redux-devtools-extension';

// Den Laden sichtbar machen
exportiere Standard „createStore“ (alle Reducers, composeWithDevTools (applyMiddleware (thunk)));

Dieser Artikel neigt sich hier dem Ende zu. Ich verstehe einige der darin enthaltenen Ausführungsprozesse und Prinzipien immer noch nicht. Ich muss ihn noch festigen und in Zukunft mehr lernen.

Oben finden Sie den ausführlichen Inhalt dieses Artikels zur Verwendung von Redux in React. Weitere Informationen zur Verwendung von Redux in React finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

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
  • Erklärung der Funktionsweise und Verwendung von Redux

<<:  So stellen Sie Egg-Anwendungen auf selbst erstellten Windows-Servern bereit (mit Bildern und Text)

>>:  MySQL SHOW PROCESSLIST unterstützt den gesamten Prozess der Fehlerbehebung

Artikel empfehlen

So stellen Sie Tomcat stapelweise mit Ansible bereit

1.1 Aufbau der Verzeichnisstruktur Dieser Vorgang...

Praktischer Bericht über die Entwicklung von Vue3- und TypeScript-Projekten

Inhaltsverzeichnis Überblick 1. Kompositions-API ...

MySQL 8.0.16 Installations- und Konfigurations-Tutorial unter Windows 10

In diesem Artikel finden Sie das grafische Tutori...

Detaillierte Einführung in den MySQL Innodb Index-Mechanismus

1. Was ist ein Index? Ein Index ist eine Datenstr...

Detaillierte Erläuterung des Redo-Logs und Undo-Logs in MySQL

Die wichtigsten Protokolle im MySQL-Protokollsyst...

So verbergen Sie die Versionsnummer in Nginx

Nginx verbirgt die Versionsnummer In einer Produk...

Installationsschritte für die chinesische Eingabemethode von Ubuntu 20.04

Dieser Artikel installiert die Google-Eingabemeth...

Verwenden Sie semantische Tags, um Ihr HTML kompatibel mit IE6,7,8 zu schreiben

HTML5 fügt weitere semantische Tags hinzu, wie et...

Beispielanalyse der Listen-Direktive in Nginx

Handlungsüberblick Im vorherigen Artikel haben wi...

Lösung für mehrere 302-Antworten im Nginx-Proxy (Nginx Follow 302)

Proxying mehrerer 302er mit proxy_intercept_error...

Zusammenfassung gängiger Fehler beim Entwurf von MySQL-Tabellen

Inhaltsverzeichnis Fehler 1: Zu viele Datenspalte...

Detailliertes Tutorial zur Verwendung des Plugins tomcat8-maven-plugin in Maven

Ich habe viele Artikel online durchsucht, aber ke...

Praktischer Bericht zur Lösung des MySQL Deep Paging-Problems

Inhaltsverzeichnis Vorwort Warum wird Limit Deep ...

Mysql-Sortierung und Paginierung (Order by & Limit) und vorhandene Fallstricke

Sortierabfrage (Sortieren nach) Im E-Commerce: Wi...