Anwendung der MapState-Idee in Vuex

Anwendung der MapState-Idee in Vuex

Hintergrund:

Während des Nachfrageentwicklungsprozesses geben einige Schnittstellen Ergebnisse mit vielen Feldern zurück, die auf der Seite angezeigt werden müssen. Normalerweise können diese Felder als berechnete Eigenschaften in der VUE-Datei gekapselt oder die entsprechenden Felder den Feldern in den Daten neu zugewiesen werden, um die Verwendung zu vereinfachen. wie folgt:

berechnet(){
  Anzahl1(){
    gib dies zurück.Zielobjekt.Anzahl1
  },
  anzahl2(){
    gib dies zurück.Zielobjekt.Anzahl2
  },
  // ...
  // Stell dir das vor. Sie müssen 5 oder 10 Mal ähnlichen Code schreiben}

Doch egal, welche Methode verwendet wird, es entsteht eine Menge Code-Redundanz, was äußerst unangenehm ist. Um dieses Problem zu lösen, greift dieser Artikel die Idee auf, die map -Methode in vuex zu verwenden, wodurch redundanter Code erheblich reduziert wird und eine einheitliche fehlertolerante Verarbeitung bei der Datenerfassung durchgeführt werden kann.

1. Kartenmethode

Die grundlegende Methode zur Statusextraktion in Vuex kann auf folgende Arten verwendet werden:

berechnet(){
  zählen(){
    gib dies zurück.$store.count
  }
}

Gleichzeitig bemerkte vuex auch das Problem: Wenn im Speicher viele Daten abgerufen werden müssen, erzeugt diese Methode überall viel Coderedundanz und wiederholten Code. Sie werden viele berechnete Eigenschaftsdefinitionen sowie lange Ketten zur Extraktion von Objekteigenschaften sehen. Daher definiert vuex eine Map-Methode, um angegebene Daten stapelweise im store abzurufen.
Bei dieser map -Methode handelt es sich eigentlich um eine Factory-Funktion (Funktion höherer Ordnung), die zum Erstellen von Funktionen einer bestimmten Form verwendet wird. Nachfolgend sehen Sie den Quellcode. Sie können sehen, dass mapState letztendlich ein Objekt res zurückgibt. Jedes Attribut in res ist eine Methode, und diese Methode gibt den Wert in state zurück.

  var mapState = normalizeNamespace(Funktion (Namespace, Zustände) {
    // Definieren Sie ein zu speicherndes Objekt und rufen Sie das angegebene Attribut ab. var res = {};
    normalizeMap(Zustände).forEach(Funktion (Ref) {
      var Schlüssel = Ref.Schlüssel;
      var val = ref.val;
      // Definiere eine Methode, um das angegebene Attribut im angegebenen Objekt abzurufen res[key] = function mappedState () {
        var Zustand = dieser.$store.zustand;
        var getters = dies.$store.getters;
        // Suche das angegebene Store-Modulobjekt entsprechend dem Namespace if (namespace) {
          var module = getModuleByNamespace(this.$store, 'mapState', namespace);
          wenn (!Modul) {
            zurückkehren
          }
          Zustand = Modul.Kontext.Zustand;
          Getter = Modul.Kontext.Getter;
        }
        // Die Eigenschaften des Store-Moduls abrufen, indem der Namespace angegeben wird return typeof val === 'function'
          val.call(dieser, Status, Getter)
          : Zustand[Wert]
      };
    });
    // Funktionsobjekt zurückgeben return res
  });

2. Anwendung

Dieser Idee folgend kann die Art und Weise der Erfassung von Feldern in einem komplexen Objekt optimiert werden. Die Factory-Funktion ist wie folgt definiert

exportiere const mapTargetValue = (nameSpace, keyList = [])=>{
  const Ergebnis = {}
  // Hinweis: Verwenden Sie keine Pfeilfunktionen für die zurückgegebene Methode, sonst erhalten Sie diese nicht
  // Zwei Formen von keyList sind hier kompatibel, siehe die Verwendungsform der Attributumbenennung in mapState if(Array.isArray(keyList)){
    keyList.forEach( Schlüssel => Ergebnis[Schlüssel] = Funktion(){ 
        // Hier nehmen wir an, dass das Namespace-Objekt direkt hiervon abgerufen werden kann // Natürlich hängt die Komplexität zum Abrufen des angegebenen Objekts von Ihrer Codelogik ab return this[nameSpace][key] || 0
    })   
  }sonst wenn(Typ der Schlüsselliste === 'Objekt' && Schlüsselliste){
    für (let key in keyList) {
      Ergebnis[Schlüsselliste[Schlüssel]] = Funktion(){ returniere dies[Namespace][Schlüssel] || 0}
    }
  }
  Ergebnis zurückgeben
}

Die Verwendung dieser Methode ist genau dieselbe wie bei mapState . Im Vergleich zur vorherigen Methode der Wertübernahme kann die Menge an wiederholtem Code erheblich reduziert werden. Die spezifischen Anwendungen sind wie folgt

berechnet: {
    ...mapZielwert("Zielobjekt", ["Anzahl1", "Anzahl2"]),
    ...mapZielwert("Zielobjekt", {Anzahl1: "Anzahl3",Anzahl2: "Anzahl4"}),
}

Dies ist das Ende dieses Artikels über die Anwendung von MapState-Ideen in Vuex. Weitere relevante Vuex-MapState-Inhalte 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:
  • So verwenden Sie Provide zur Implementierung der Statusverwaltung in Vue3
  • Detailliertes Beispiel für die Statusverwaltung der Hilfsfunktion der Vue-Frontend-Entwicklung
  • Der praktische Prozess des Login-Status-Managements im vuex-Projekt
  • Erfahren Sie schnell, wie Sie mit der Vuex-Statusverwaltung in Vue3.0 beginnen
  • So verstehen Sie den einfachen Speichermodus der Statusverwaltung von Vue
  • So verwenden Sie Vuex in einem Vue-Projekt
  • Verwendung des Vuex-Namespace
  • Vue-Statusverwaltung: Verwendung von Pinia statt Vuex

<<:  Beispiel für HTML-Abschirmung des Rechtsklickmenüs und der Linksklick-Eingabefunktion

>>:  Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker

Artikel empfehlen

So berechnen Sie mit Linux den von zeitgesteuerten Dateien belegten Speicherplatz

Öffnen Sie den Editor für geplante Aufgaben. Cent...

Verwendung und Unterschied von Js-Modulverpackungsexporten erfordern Import

Inhaltsverzeichnis 1. Commonjs-Exporte und erford...

Beispielverwendung des Linux-Komprimierungsdateibefehls „zip“

Das „.zip“-Format wird zum Komprimieren von Datei...

Implementierung der MySQL5.7 mysqldump-Sicherung und -Wiederherstellung

MySQL-Sicherung Kaltes Backup:停止服務進行備份,即停止數據庫的寫入H...

Zusammenfassung der Fallstricke bei Virtualbox Centos7 NAT+Host-Only-Netzwerken

Inhaltsverzeichnis 1. Problemhintergrund 2. Welch...

Einführung in die Verwendung von Unicode-Zeichen in Webseiten (&#, \u usw.)

Die ersten Computer konnten nur ASCII-Zeichen ver...

Beste Möglichkeit, den Schlüssel im JSON-Objekt zu ersetzen

JSON (JavaScript Object Notation, JS Object Notat...

So importieren Sie SQL-Dateien in Navicat Premium

Ich habe heute mit der Arbeit an meinem Abschluss...