Dieses Tutorial ist ein Einführungstutorial. Wenn Fehler vorhanden sind, weisen Sie bitte darauf hin. 1. Was ist vuexVuex ist ein speziell für Vue.js-Anwendungen entwickeltes Zustandsverwaltungsmuster. Es verwendet einen zentralen Speicher, um den Status aller Komponenten der Anwendung zu verwalten, und verwendet entsprechende Regeln, um sicherzustellen, dass sich der Status auf vorhersehbare Weise ändert. Detaillierte Informationen finden Sie im offiziellen Website-Dokument vuex.vuejs.org/zh/ Nachfolgend finden Sie eine kurze Einführung in vuex 2. Installation und EinführungInstallieren Sie zuerst vuex. npm installiere vuex --save Es kann verwendet werden, nachdem es in main.js eingeführt wurde. // Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll // (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias festgelegt. Vue von „vue“ importieren App aus „./App“ importieren Router aus „./router“ importieren //vuex verwendet import Vuex von 'vuex' Vue.Verwenden(Vuex) const store = neuer Vuex.Store({ Zustand: { //Anzahl globaler Variablen: 31231 } }) Vue.config.productionTip = falsch /* eslint-deaktivieren Sie no-new */ neuer Vue({ el: '#app', Router, //vuex muss zum Store hinzugefügt werden, Komponenten: { App }, Vorlage: '<App/>' }) 3. Verwendung von vuex<Vorlage> <div> Der Chef hat {{showData}} <HalloWelt2/> </div> </Vorlage> <Skript> importiere HelloWorld2 aus './HelloWorld2' Sohn aus './son' importieren Standard exportieren { Name: "Hallo Welt", Daten () { zurückkehren { Nachricht2:"", cou } }, Komponenten: { HalloWelt2, Sohn },berechnet: { zeigeDaten(){ gib dies zurück.$store.state.count; } } } </Skript> <Vorlage> <div> Der zweite hat {{$store.state.count}} </div> </Vorlage> <Skript> Standard exportieren { Name: 'HelloWorld2', Daten() { zurückkehren { } } } </Skript> 4. ProzesseinführungWie in der Abbildung gezeigt, lautet der Prozess, wenn vuex nicht verwendet wird: Ansicht->Aktionen->Status->Ansicht Nach der Verwendung von Vuex lautet der Prozess Vuecomponent->(Dispatch)Actions->(Commit)Mutations->(Mutate)State->(Render)->Vuecomponent 5. MutationStatusänderungen. Die einzige Möglichkeit, den Status im Vuex-Store zu ändern, besteht darin, eine Mutation zu übermitteln. Mutationen in Vuex sind Ereignissen sehr ähnlich: Jede Mutation hat einen String-Ereignistyp (Typ) und eine Rückruffunktion (Handler). Mit dieser Rückruffunktion nehmen wir tatsächlich die Statusänderung vor und sie erhält den Status als erstes Argument. // Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll // (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias festgelegt. Vue von „vue“ importieren App aus „./App“ importieren Router aus „./router“ importieren //vuex verwendet import Vuex von 'vuex' Vue.Verwenden(Vuex) const store = neuer Vuex.Store({ Zustand: { //Anzahl globaler Variablen: 31231 }, //Statusänderungsmethode Mutationen: { //state ist der obige Status addData(Status) { //Zustand ändern state.count++ } } }) Vue.config.productionTip = falsch /* eslint-deaktivieren Sie no-new */ neuer Vue({ el: '#app', Router, //vuex muss zum Store hinzugefügt werden, Komponenten: { App }, Vorlage: '<App/>' }) Führen Sie dann die Änderung durch <Vorlage> <div> Der Chef hat {{showData}} <HalloWelt2/> <button type = "button" v-on:click = "changeData"> Schaltfläche ändern</button> </div> </Vorlage> <Skript> importiere HelloWorld2 aus './HelloWorld2' Sohn aus './son' importieren Standard exportieren { Name: "Hallo Welt", Daten () { zurückkehren { Nachricht2:"", } }, Komponenten: { HalloWelt2, Sohn },berechnet: { zeigeDaten(){ gib dies zurück.$store.state.count; } }, Methoden: { //Änderungen ausführen changeData(event){ dies.$store.commit("addData"); } } } </Skript> 6. Getter-FilterungSie können Mutationen begrenzen. Wenn die Mutation beispielsweise kleiner als 0 ist, kann sie nicht reduziert werden. // Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll // (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias festgelegt. Vue von „vue“ importieren App aus „./App“ importieren Router aus „./router“ importieren //vuex verwendet import Vuex von 'vuex' Vue.Verwenden(Vuex) const store = neuer Vuex.Store({ Zustand: { //Anzahl globaler Variablen: 0 }, //Statusänderungsmethode Mutationen: { //state ist der obige Status addData(Status) { //Zustand ändern state.count++ } }, //Filtergetter: { getState(Zustand) { wenn (Zustand.Anzahl >= 5) { Rückkehr 5 } anders { Statusanzahl zurückgeben } } } }) Vue.config.productionTip = falsch /* eslint-deaktivieren Sie no-new */ neuer Vue({ el: '#app', Router, //vuex muss zum Store hinzugefügt werden, Komponenten: { App }, Vorlage: '<App/>' }) Beim Anrufen <Vorlage> <div> Der zweite hat {{$store.getters.getState}} </div> </Vorlage> <Skript> Standard exportieren { Name: 'HelloWorld2', Daten() { zurückkehren { } } } </Skript> 7.Aktion - Asynchrone VerarbeitungDie Aktion ähnelt der Mutation, außer dass: Die Aktion übermittelt eine Mutation, anstatt den Status direkt zu ändern. Die Aktion kann beliebige asynchrone Vorgänge enthalten. Mutationen können nur synchron verarbeitet werden // Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll // (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias festgelegt. Vue von „vue“ importieren App aus „./App“ importieren Router aus „./router“ importieren //vuex verwendet import Vuex von 'vuex' Vue.Verwenden(Vuex) const store = neuer Vuex.Store({ Zustand: { //Anzahl globaler Variablen: 0 }, //Statusänderungsmethode Mutationen: { //state ist der obige Status addData(Status) { //Zustand ändern state.count++ } }, //Filtergetter: { getState(Zustand) { wenn (Zustand.Anzahl >= 5) { Rückkehr 5 } anders { Statusanzahl zurückgeben } } }, Aktionen: { //Der Vorteil der aktionsgesteuerten Mutationsmethode ist die asynchrone Verarbeitung addData(context) { //Asynchron simulieren setTimeout(() => { Kontext.commit('Daten hinzufügen') }, 1000) } } }) Vue.config.productionTip = falsch /* eslint-deaktivieren Sie no-new */ neuer Vue({ el: '#app', Router, //vuex muss zum Store hinzugefügt werden, Komponenten: { App }, Vorlage: '<App/>' }) Aktion soll beim Senden aufgerufen werden. <Vorlage> <div> Der Chef hat {{showData}} <HalloWelt2/> <button type = "button" v-on:click = "changeData"> Schaltfläche ändern</button> </div> </Vorlage> <Skript> importiere HelloWorld2 aus './HelloWorld2' Sohn aus './son' importieren Standard exportieren { Name: "Hallo Welt", Daten () { zurückkehren { Nachricht2:"", } }, Komponenten: { HalloWelt2, Sohn },berechnet: { zeigeDaten(){ gib dies zurück.$store.getters.getState; } }, Methoden: { //Änderungen ausführen changeData(event){ //Operationsmutationsmethode //this.$store.commit("addData"); //Die Aktion soll anstelle der durch die Aktion ausgelösten Mutationsmethode ausgeführt werden this.$store.dispatch("addData"); } } } </Skript> 8.ModulDurch die Verwendung eines einzelnen Zustandsbaums werden alle Anwendungszustände in einem großen Objekt zentralisiert. Wenn Ihre Anwendung sehr komplex wird, kann das Store-Objekt ziemlich aufgebläht werden. Um die oben genannten Probleme zu lösen, ermöglicht uns Vuex, den Store in Module aufzuteilen. Jedes Modul hat seinen eigenen Status, seine eigene Mutation, Aktion, Getter und sogar verschachtelte Untermodule – von oben nach unten immer gleich aufgeteilt: Wenn die Route aufgeteilt werden kann, wird die Datei nicht in main.js, sondern in vuex abgelegt. Erstellen Sie eine neue store/index.js //vuex verwendet import Vue von 'vue' Vuex von „vuex“ importieren Vue.Verwenden(Vuex) exportiere standardmäßig neuen Vuex.Store({ Zustand: { //Anzahl globaler Variablen: 0 }, //Statusänderungsmethode Mutationen: { //state ist der obige Status addData(Status) { //Zustand ändern state.count++ } }, //Filtergetter: { getState(Zustand) { wenn (Zustand.Anzahl >= 5) { Rückkehr 5 } anders { Statusanzahl zurückgeben } } }, Aktionen: { //Der Vorteil der aktionsgesteuerten Mutationsmethode ist die asynchrone Verarbeitung addData(context) { //Asynchron simulieren setTimeout(() => { Kontext.Commit('Daten hinzufügen') }, 1000) } } }) Ändern Sie main.js // Die Vue-Build-Version, die mit dem Befehl „import“ geladen werden soll // (nur Laufzeit oder Standalone) wurde in webpack.base.conf mit einem Alias festgelegt. Vue von „vue“ importieren App aus „./App“ importieren Router aus „./router“ importieren Store aus „./store“ importieren Vue.config.productionTip = falsch /* eslint-deaktivieren Sie no-new */ neuer Vue({ el: '#app', Router, //vuex muss zum Store hinzugefügt werden, Komponenten: { App }, Vorlage: '<App/>' }) Wir können auch den Status in main.js übernehmen und einen neuen store/state.js erstellen Standard exportieren { Anzahl: 0 } Dann kann index.js geändert werden in //vuex verwendet import Vue von 'vue' Vuex von „vuex“ importieren Status aus „./state“ importieren Vue.Verwenden(Vuex) exportiere standardmäßig neuen Vuex.Store({ Staat: Staat, //Statusänderungsmethode Mutationen: { //state ist der obige Status addData(Status) { //Zustand ändern state.count++ } }, //Filtergetter: { getState(Zustand) { wenn (Zustand.Anzahl >= 5) { Rückkehr 5 } anders { Statusanzahl zurückgeben } } }, Aktionen: { //Der Vorteil der aktionsgesteuerten Mutationsmethode ist die asynchrone Verarbeitung addData(context) { //Asynchron simulieren setTimeout(() => { Kontext.commit('Daten hinzufügen') }, 1000) } } }) ZusammenfassenDies ist das Ende dieses Artikels über die Installation und Verwendung von Vuex für Vue-Anfänger. Weitere Informationen zur Installation und Verwendung von Vuex 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! Das könnte Sie auch interessieren:
|
<<: Implementierung von zwei Basis-Images für die Docker-Bereitstellung von Go
>>: Schritte zum Ändern des MySQL-Datenbankdatendateipfads unter Linux
Struktureller (Position) Pseudoklassenselektor (C...
Inhaltsverzeichnis Die Fallstricke Füllmethode Wa...
Vorwort Dieses Steuerelement weist beim direkten ...
füge -it hinzu docker run -it -name test -d nginx...
vue+el-upload Dynamischer Upload mehrerer Dateien...
<br />Gestern habe ich beim W3C gesehen, das...
Entwickeln Sie ein Zahlenratespiel, bei dem zufäl...
Wenn Sie nicht verstehen, was ich geschrieben hab...
1. Verwenden Sie das Playbook von Ansible, um htt...
Inhaltsverzeichnis 1. DHCP-Dienst (Dynamic Host C...
Inhaltsverzeichnis 1. Konzept 2. Umgebungsbeschre...
Antd+React+Webpack ist häufig die Standardkombina...
1. Einführung in LVM Bei der Verwaltung von Linux...
Hinweis: Dieser Artikel wurde von jemand anderem ü...
Da es in dem Produkt meiner Firma eine Schaltfläc...