Vorwort: Als Fortsetzung des vorherigen Artikels „Front-End-Statusverwaltung (Teil 1)“ hätte ich nicht erwartet, dass so viele Leser ihm so viel Aufmerksamkeit schenken würden. Vielen Dank an alle für Ihre Unterstützung und Vorschläge. Ich drücke nur meine persönliche Meinung und einige meiner eigenen Gedanken aus, die möglicherweise nicht umfassend genug sind. Das Beispiel der Verwendung von Vue ist nur ein Leitfaden und Vue hat auch ein hohes Maß an Aufmerksamkeit. Einige Freunde möchten neben Vuex noch andere Lösungen hören. Heute beginnen wir mit Redux und erweitern es schrittweise (genau wie der Titel). 1. Wiederholen Als Mitglied der Die grundlegenden Operationen von Redux sind ungefähr wie folgt:
1.1. Shop (Bibliothekar) importiere { createStore } von 'redux' Konstantenspeicher = ErstelleSpeicher(Reducer); 1.2. Staat (Buch) Der Verwenden Sie importiere { createStore } von 'redux' const store = createStore(Reduzierer) store.getState() 1.3. Aktion (Bücherausleihliste) Und wenn Sie ein Buch ausleihen möchten? Selbstverständlich müssen Sie der Verwaltung eine Ausleihliste vorlegen. Dann kann der Benutzer nicht auf Bei const Aktion = { Typ: 'Klick', Info: 'Ausleihliste übermitteln' } 1.4、store.dispatch (Ausleihliste übermitteln) store.dispatch(Aktion) 1.5. Reducer (Verpackungsbücher) Nachdem const Reducer = (Status, Aktion) => { return `action.info: ${state}` // => Ausleihliste übermitteln: Traum der Roten Kammer} store.subscribe (Bücher erhalten) Sobald sich der Status ändert, hört store.subscribe() darauf und aktualisiert die Ansicht automatisch. const abmelden = store.subscribe(() => { rendern() { //Aktualisiere die Ansicht } }) // Sie können sich auch abmelden (anhören) abbestellen() Zusammenfassung: Ich glaube, dass Studierende, die gerade erst mit Obwohl es immer noch unmöglich ist, in
Warum wir das tun sollten, habe ich bereits im vorherigen Artikel erwähnt. Seine Bedeutung liegt in der Erleichterung des Anwendungstests, der Fehlerdiagnose und der 2. Zweck der staatlichen VerwaltungTatsächlich besteht das häufigste Szenario für die meisten Programmierer bei der Verwendung von Redux darin, von Seite A zu Seite B zurückzukehren und den Status von Seite B speichern zu müssen. Wenn das Projekt nicht groß ist, würde die Verwendung Aber leider gibt es in Nehmen wir die Bibliothek als Beispiel. Jetzt gibt es ein Bibliotheksverwaltungssystem. Wenn Sie von der Listenseite (Liste) zur Angenommen, der von Ihnen verwendete Technologie-Stack ist ( //KeepAlive.js exportiere Standardfunktion keepAliveWrapper() { Rückgabefunktion keepAlive(WrappedComponent) { Rückgabeklasse KeepAlive erweitert WrappedComponent { // ps Konstruktor(Requisiten) { super(Requisiten) // mach was... } componentDidMount() { Konstante { keepAlive: { FelderWert }, } = dieser.Kontext // mach was... super.componentDidMount() } rendern() { // mach was... return super.render() } } } } Deshalb müssen wir die ursprüngliche Komponente erben Wenn die herkömmliche Schreibmethode eine Klassenkomponente zurückgibt ( Wenn // main.jsx-Stammkomponente importiere React von „react“ const appContext = React.createContext() Klasse App erweitert React.Component { Konstruktor(Requisiten) { super(Requisiten) dieser.Zustand = { keepAlive: {}, // Objekt zwischenspeichern isCache: false, // Ob fieldsValue zwischengespeichert werden soll: {} // Formularwert zwischenspeichern } } componentDidMount() { // Initialisieren const keepAlive = { isCache: dieser.Zustand.isCache, umschalten: this.toggleCache.bind(this), FelderWert: dieser.Status.FelderWert, } dies.setState({ keepAlive }) } // Hier ist eine Methode zum Löschen des Status, um Rendering-Warnungen zu verhindern (Sie können vor dem Rendern keine Felder festlegen ...) // Beispielsweise muss list1 => list1/detail => list2 den Sprung in den folgenden Rückruf einfügen und den Status löschen toggleCache(isCache = false, payload, callback) { const { fieldsValue = null } = Nutzlast const keepAlive = { istCache, FelderWert, umschalten: this.toggleCache.bind(this), } const fn = Typ des Rückrufs === 'Funktion' ? Rückruf() : void 0 dies.setState( { am Leben bleiben, }, () => { fn } ) } rendern() { const { keepAlive } = dieser.Zustand <appContext.Provider-Wert={{ keepAlive }}> // Ihre Routen ... </appContext.Provider> } } Der Grund, warum wir // importiere React von „react“, wenn du es auf der Seite verwendest importiere keepAlive von '../keepAlive' // keepAlive muss am nächsten an der Originalkomponente platziert werden @keepAlive() Klasse App erweitert React.Component { Konstruktor (Requisiten) { super(Requisiten) dieser.Zustand = { // etwas initialisieren … } } componentDidMount() { // tu etwas... wenn(dieser.Kontext.keepAlive.fieldsValue) { const { tableList } = this.context.keepAlive.fieldsValue console.log('Zwischengespeichert:',Tabellenliste) // Cache: ['1', '2'] } } // Details anzeigen detail = () => { this.context.keepAlive.fieldsValue = { Tabellenliste: ['1', '2'] } // springen... } // Wenn Sie über die Route der ersten Ebene springen müssen, z. B. list1 => list1/detail (die folgende Methode sollte auf der Detailseite stehen) => list2, müssen Sie die Warnung toList2 = () => { behandeln. this.context.keepAlive.toggle(false, {}, () => { // springen... }) } } Im obigen Beispiel wird Dekorator-Schreiben verwendet. Um es einfach auszudrücken, müssen Sie das folgende Konfigurieren Sie in { "Compileroptionen": { "experimentalDecorators": wahr }, "ausschließen": [ "Knotenmodule", "Entfernung" ] } In .babelrc konfigurieren: { "Plugins": [ "@babel/plugin-proposal-decorators", { "Legacy": wahr } ] } Die obige Methode ist für das gerade erwähnte Szenario besser geeignet (um von Seite A zu Seite B zurückzukehren, muss der Status von Seite B gespeichert werden). Manche Leute sagen, dass Sie genauso gut Zusammenfassen: Dies ist das Ende dieses Artikels über Front-End-Statusverwaltung. Weitere Inhalte zur Front-End-Statusverwaltung finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Rückblick auf den vorherigen Artikel: Eine kurze Diskussion über die Front-End-Statusverwaltung (Teil 1) Das könnte Sie auch interessieren:
|
<<: Nginx tp3.2.3 404 Problemlösung
>>: HTML-Tabellen-Markup-Tutorial (18): Tabellenkopf
Inhaltsverzeichnis Ändern der Repository-Quelle S...
Um es zusammenzufassen: „Nur lesen“ ist nur für Ei...
Elastic Stack, allgemein bekannt als ELK Stack, i...
In diesem Artikelbeispiel wird der spezifische Co...
Zuvor habe ich die Verwendung der charAt()-Method...
Inhaltsverzeichnis 1. V8-Quelle 2. V8-Serviceziel...
1. Zeigen Sie die Dateien oder Verzeichnisse im V...
Als ich vor einigen Tagen ein Modul einer Webseite...
Inhaltsverzeichnis Anforderung: Abfrage laufender...
Lassen Sie uns zunächst über den Unterschied spre...
SVG wurde in den letzten Jahren aufgrund seiner v...
Wir begegnen dieser Situation häufig bei der Fron...
Vorwort Ich bin ein PHP-Programmierer, der als Pr...
Im Vergleich zum alten Lebenszyklus Drei Hooks we...
Der Animationsteil von CSS wird von JS blockiert,...