Detaillierte Erläuterung des Vuex-Gesamtfalls

Detaillierte Erläuterung des Vuex-Gesamtfalls

Bildbeschreibung hier einfügen

1. Einleitung

Werfen wir einen Blick auf eine professionellere Einführung in Vuex:

Vuex ist ein speziell für Vue entwickelter Zustandsverwaltungsmodus für Anwendungen. Er verwaltet den Status aller Komponenten der Anwendung über einen zentralen Speicher und sorgt mit entsprechenden Regeln dafür, dass sich der Status auf vorhersehbare Weise ändert.

Kurz gesagt, Vuex verwendet eine globale objektähnliche Form, um die gemeinsamen Daten aller Komponenten zu verwalten. Wenn Sie die Daten dieses globalen Objekts ändern möchten, müssen Sie sie auf die von Vuex bereitgestellte Weise ändern (Sie können sie nicht nach Belieben auf Ihre eigene Weise ändern).

2. Vorteile

Der Unterschied zwischen der Vuex-Statusverwaltung und der Verwendung herkömmlicher globaler Variablen:

  1. Der Statusspeicher von Vuex ist reaktionsfähig: Das heißt, wenn Ihre Komponente den Status dieses Vuex verwendet, aktualisieren alle zugehörigen Komponenten die entsprechenden Daten automatisch, sobald sich dieser ändert, was Entwicklern viel Ärger erspart.
  2. Der Status von Vuex kann nicht direkt geändert werden: Wenn es sich um eine globale Objektvariable handelt, ist sie leicht zu ändern, aber das ist in Vuex nicht möglich. Wenn Sie sie ändern möchten, müssen Sie die einzige von Vuex bereitgestellte Möglichkeit verwenden: explizit mutations übermitteln ( commint ), um die Änderung zu implementieren. Dies hat den Vorteil, dass wir die Änderungen in jedem Status problemlos verfolgen können, was beim Debuggen während des Entwicklungsprozesses sehr praktisch ist.

3. Nutzungsschritte

1. Installieren Sie Vuex

npm installiere vuex --save

2. Referenz Vuex

Vue von „vue“ importieren
Vuex von „vuex“ importieren
Vue.Verwenden(Vuex)

3. Erstellen Sie ein Lager

Um Vuex zu verwenden, müssen wir einen store erstellen, den wir als Lager bezeichnen, und diesen store zum Verwalten unseres Status verwenden.

//Einen Shop erstellen
const store = neuer Vuex.Store({});

4. Enthaltene Module

  • Status : Definiert die Datenstruktur des Anwendungsstatus. Hier können Sie den Standardanfangsstatus festlegen.
  • Getter : Ermöglicht Komponenten, Daten aus dem Store abzurufen. mapGetters ordnet getter im Store einfach lokal berechneten Eigenschaften zu.
  • Mutation : ist die einzige Möglichkeit, den Status im Speicher zu ändern und muss eine synchrone Funktion sein.
  • Aktion : Wird verwendet, um mutation zu übermitteln, anstatt den Status direkt zu ändern, und kann alle asynchronen Vorgänge umfassen.
  • Modul : Der Shop kann in Module aufgeteilt werden. Jedes Modul hat seinen eigenen state , seine eigene mutation , action , getter und sogar verschachtelte Untermodule.

Die Rolle von Vuex ähnelt der eines globalen Objekts. Vuex verwendet einen einzelnen Zustandsbaum und verwendet ein Objekt „Zustand“, um alle Zustände der gesamten Anwendungshierarchie aufzunehmen. Sie können diese Zustände als eine Reihe globaler Variablen und Daten verstehen.

Geben Sie hier die Bildbeschreibung ein

1. Staat

Angenommen, wir haben eine globale count mit einem Wert von 5. Dann können wir es als key und value im state definieren und es als globalen Status für uns verwenden. wie folgt:

 //Einen Shop erstellen
 const store = neuer Vuex.Store({
    //state speichert den Status der Anwendungsschicht state:{
        Anzahl: 5 // Gesamt: 5
    }
 });

2. Getter

Man kann davon ausgehen, dass getters berechnete Eigenschaften des Speichers sind, ähnlich wie computed , die die Daten im Status filtern und transformieren können.

Angenommen, wir möchten einen neuen Status newCount basierend auf state.count ableiten. In diesem Fall ist es angebracht, unsere getters zu verwenden.

getters akzeptieren state als erstes Argument

const store = neuer Vuex.Store({
   //state speichert den Status der Anwendungsschicht state:{
      Anzahl: 5 // Gesamt: 5
   },
   Getter: {
      neuerAnzahl:Zustand => Zustand.Anzahl * 3
   }
});

In Komponente abrufen { {newCount}} -Methode:

Standard exportieren {
  berechnet: {
      neueAnzahl(){
          gib dies zurück.$store.getters.newCount;
      }
  }
};  

3. Mutationen

Die einzige Möglichkeit, die Vuex uns bietet, den Status im Warehouse store zu ändern, besteht in der Übermittlung mutation , und es muss sich um同步函數handeln

Wir haben in mutations eine Funktion namens increment definiert und im Funktionskörper möchten wir Änderungen vornehmen.

Akzeptiert state als ersten Parameter, der zweite ist ein benutzerdefinierter Parameter

 const store = neuer Vuex.Store({
    //state speichert den Status der Anwendungsschicht state:{
        Anzahl: 5 // Gesamt: 5
    },
    // Mutationen sind die einzige Möglichkeit, Daten im Status Mutationen zu ändern:{
        Inkrement(Zustand, Wert) {
            Zustand.Anzahl += Wert;
        }
    }
 });

Wenn wir commit übermitteln, entspricht der erste Parameter "increment" der increment in mutations und der zweite Parameter ist der benutzerdefinierte Wert. Zum Beispiel:

 Methoden: {
   getVal(Ereignis) {
     //Den aktuellen Schlüsselwert abrufen let value = event.target.dataset.value;
     //Senden Sie eine Mutation mit dem Namen increment per Commit
     this.$store.commit("Inkrement", Wert);
   }
 }

In Komponente abrufen { {count}} Methode:

Standard exportieren {
  berechnet: {
      zählen(){
          gib dies zurück.$store.state.count;
      }
  }
};  

4. Aktion

  1. Wird verwendet, um mutation zu übermitteln, anstatt den Status direkt zu ändern, und kann alle asynchronen Vorgänge umfassen
  2. Dieser Prozess wird nur durch action=>mutations=>states ausgeführt. Die einzelnen Schritte sind wie folgt:
exportiere standardmäßig neuen Vuex.Store({
    //Datenstatus speichern: {
        Objekt: {},
    },
    //4. Behandeln Sie Mutationen mit den Methoden in Commit-Mutationen: {
        getParam(Zustand, Objekt) {
            //5. Ändern Sie die Daten im Status state.obj = Object
        }
    },
    //2. Akzeptieren Sie die von den Dispatch-Aktionen übergebenen Methoden und Parameter: {
        getParamSync(store, Objekt) {
            // Asynchrone Operationen verarbeiten setTimeout(() => {
                //3. Senden Sie eine Mutation namens getParam über Commit
                //Die Aktionsfunktion empfängt ein Store-Instanzobjekt, sodass Sie store.commit aufrufen können, um eine Mutation festzuschreiben
                store.commit('getParam', Objekt);
            }, 1000)
        }
    }
})

Dann können wir es in der Komponente aufrufen.

Methoden: {
   getVal() {
	  lass name='xia';
	  sei Alter = '26';
	  sei Geschlecht = 'Mann';
	  //1. Übergeben Sie die Methode getParamSync und mehrere Parameter {name, age, sex} über dispatch an Aktionen
	  dies.$store.dispatch('getParamSync',{Name,Alter,Geschlecht})
   }
}

5. Module

Mit zunehmender Komplexität des Projekts wird Vuex zur Vereinfachung seiner Verwaltung im Allgemeinen entsprechend seiner Funktionen in verschiedene Module unterteilt, um eine einfache zukünftige Verwaltung zu ermöglichen. Jedes Modul hat seinen eigenen state , seine eigene mutation , action , getter und sogar verschachtelte Untermodule.

Vue von „vue“ importieren
Vuex von „vuex“ importieren
Status aus „./state“ importieren
Mutationen aus „./mutations“ importieren
Aktionen aus „./actions“ importieren
importiere * als Getter aus './getters'

importiere ModulA aus './Modul/ModulA' // Modul A
importiere ModulB aus './Modul/ModulB' // Modul B

Vue.Verwenden(Vuex)

exportiere standardmäßig neuen Vuex.Store({
    Aktionen,
    Getter,
    Zustand,
    Mutationen,
    Module:
        ModulA,
        ModulB
    }
})

moduleA.js / moduleB.js -Dateien

// Jedes Modul hat seinen eigenen Status, seine eigene Mutation, Aktion, Getter und sogar verschachtelte Untermodule export default {
    Zustand: {
        Text: 'ModulA'
    },
    Getter: {},
    Mutationen: {},
    Aktionen: {}
}

Dann können wir es in der Komponente aufrufen.

<Vorlage>
	<div Klasse="Demo">
		<h1>{{getText1}}</h1>
		<h1>{{getText2}}</h1>
	</div>
</Vorlage>
berechnet: {
    getText1(){
    	gib dies zurück.$store.state.moduleA.text;
    },
    // oder ...mapState({
		getText2: Status => Status.ModulB.Text;
	})
}

Daraus können wir erkennen, dass der Zustand innerhalb des Moduls lokal ist und nur dem Modul selbst gehört, sodass von außen über den entsprechenden Modulnamen darauf zugegriffen werden muss.

5. Das einfachste Projektbeispiel von Vuex

Verwenden Sie die Vuex-Syntax Sugar mapMutations und mapGetters

1. Speicherung von Daten

eine.vue-Datei

importiere { mapMutations } von "vuex"; // Importiere mapMutations
Standard exportieren {
	Methoden: {
		...mapMutations({
		    // Verknüpfe changeNews mit SET_NEWS in Mutationen changeNews: "SET_NEWS"
		}),
		einreichen(){
			// Senden Sie eine Mutation mit dem Namen changeNews und übergeben Sie den Parameter val
			let val = 'Testnachrichten';
			this.changeNews(val); // entspricht this.$store.commit("changeNews", val);
		}
	}
}

2. Daten abrufen

b.vue-Datei

importiere { mapGetters } von "vuex"; // MapGetters importieren 
Standard exportieren {
	berechnet: {
        //Verwende vuex zum Lesen der Daten (die Daten in getters.js werden gelesen)
        // Entspricht this.$store.getters.news (Vuex-Syntax-Sugar)
        ...mapGetters(["Neuigkeiten"])
	},
	erstellt() {
        // Holen Sie sich die Nachrichtendaten in Gettern console.log(this.news);
	}
}

3. Dateiverzeichnisstruktur speichern

Geben Sie hier die Bildbeschreibung ein

index.js

Vue von „vue“ importieren
Vuex von „vuex“ importieren
Status aus „./state“ importieren
Mutationen aus „./mutations“ importieren
Aktionen aus „./actions“ importieren
importiere * als Getter aus './getters'

//Jedes Mal, wenn der Status geändert wird, wird das Protokoll in der Konsole ausgedruckt
importiere createLogger aus „vuex/dist/logger“

Vue.Verwenden(Vuex)

const debug = process.env.NODE_ENV !== 'Produktion'

exportiere standardmäßig neuen Vuex.Store({
	Aktionen,
	Getter,
	Zustand,
	Mutationen,
	strict: debug, // Aktiviere den strikten Modus, wenn debug=true (Leistungsverlust)
	Plugins: debuggen? [createLogger()]: []
})

Zustand.js

konstanter Zustand = {
	Nachricht: {}
}

Standardzustand exportieren;

mutationen.js

const Mutationen = {
	SET_NEWS(Status, Wert) {
		staat.news = val
	}
}

Standardmutationen exportieren;

Aktionen.js

//Asynchrone Verarbeitung const actions = {
    M_NEWS({ Commit }, Wert) {
        commit('SET_NEWS', val); // Mutationen committen }
}

Standardaktionen exportieren;

getters.js

//Normalerweise werden Daten über Getter abgerufen (this.$store.getters.news;)
export const news = state => state.news // Direkt zuordnen, ohne weitere Verarbeitung durchzuführen

4. Nutzung des Shops

Referenz in main.js

Store aus './store' importieren //Vuex-Speicherdatei neue Vue({
	el: '#app',
	Router,
	speichern,
	Komponenten:
		App
	},
	Vorlage: '<App/>'
})

Dies ist das Ende dieses Artikels mit der detaillierten Erklärung des Gesamtfalls von Vuex. Weitere relevante Vuex-Inhalte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Erste Schritte mit Vuex
  • Verwenden Sie immer noch Vuex? Erfahren Sie mehr über Pinia
  • Detailliertes Tutorial zur Verwendung von Aktionen in Vuex
  • Grundlegendes Tutorial zur Installation und Verwendung von VueX
  • Detaillierte Erläuterung der Verwendung von Vuex beim Vue-Lernen
  • Detaillierte Erklärung der Eigenschaften und Funktionen von Vuex
  • Detaillierte Erklärung der Kernkonzepte und der grundlegenden Verwendung von Vuex
  • So verwenden Sie Vuex in einem Vue-Projekt
  • Tiefgreifendes Verständnis der Rolle von Vuex
  • Vuex in einem Artikel verstehen
  • Detaillierte Einführung und Verwendung von Vuex

<<:  Zusammenfassung der MySQL-Abfragesyntax

>>:  Konfigurieren Sie die Java-Entwicklungsumgebung in Ubuntu 20.04 LTS

Artikel empfehlen

So bewerben Sie sich für Webdesign-Jobs

<br />Hallo zusammen! Es ist mir eine Ehre, ...

Detaillierte Erläuterung der Wissenspunkte zum MySQL Strict Mode

I. Erläuterung des strikten Modus Gemäß den Einsc...

Docker-Pull-Image und Tag-Vorgang Pull | Tag

Ich habe den Quellcode des Fabric-Projekts noch e...

Muss MySql ein Commit durchführen?

Ob MySQL bei der Ausführung von Vorgängen wie Ein...

So finden Sie Informationen zu nicht festgeschriebenen Transaktionen in MySQL

Vor einiger Zeit habe ich einen Blogbeitrag mit d...

Tutorial zur mobilen Entwicklung: Zusammenfassung der Pixelanzeigeprobleme

Vorwort Ich bin davon überzeugt, dass bei der Ent...

Achten Sie bei der Webseitenerstellung auf die Verwendung von HTML-Tags

HTML hat versucht, sich von der Präsentation weg ...

So legen Sie den Standardwert für den Datums-/Uhrzeittyp in MySQL fest

Beim Ändern des Standarddatums-/Uhrzeitwerts über...

Linux Yum-Paketverwaltungsmethode

Einführung yum (Yellow dog Updater, Modified) ist...

MySQL-Operationen: Operationen mit JSON-Datentyp

Im vorherigen Artikel haben wir das ausführliche ...

Einführung in die Funktionen und Verwendung von Wert- und Namensattributen in HTML

1. Der in der Schaltfläche verwendete Wert bezieht...