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

Fähigkeiten zur Seiten-Refaktorierung - Inhalt

Genug des Smalltalks <br />Basierend auf de...

Eine kurze Analyse der CSS-Selektorgruppierung

Selektorgruppierung Angenommen, Sie möchten, dass...

Der Aufruf der Suchmaschine auf der Seite erfolgt am Beispiel von Baidu

Heute ist mir plötzlich eingefallen, dass es cool ...

Detaillierte Erklärung zur Verwendung der Element-el-button-Button-Komponente

1. Hintergrund Schaltflächen werden sehr häufig v...

Zusammenfassung einiger Tipps zum MySQL-Indexwissen

Inhaltsverzeichnis 1. Grundkenntnisse der Indizie...

Verwendung von Vue-Filtern und Probleme bei der Zeitstempelkonvertierung

Inhaltsverzeichnis 1. Das Konzept schnell erkenne...

Lösungen für Probleme bei der Verwendung von addRoutes in Vue-Projekten

Inhaltsverzeichnis Vorwort 1. 404 Seite 1. Ursach...

So richten Sie die Swap-Partition SWAP in Linux 7.7 ein

Die Swap-Partition des Linux-Systems, also die Sw...

Vue implementiert Beispielcode zur Formulardatenvalidierung

Fügen Sie dem el-form-Formular Regeln hinzu: Defi...