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

Vue-Element el-transfer fügt Drag-Funktion hinzu

Das Core Asset Management Project erfordert, dass...

So ändern Sie das Datenbankdatenspeicherverzeichnis in MySQL

Vorwort Die Standarddatenbankdatei der MySQL-Date...

Docker verpackt das lokale Image und stellt es auf anderen Maschinen wieder her

1. Verwenden Sie Docker-Images, um alle Image-Dat...

Praxis der Verwendung von Vite2+Vue3 zum Rendern von Markdown-Dokumenten

Inhaltsverzeichnis Benutzerdefinierte Vite-Plugin...

Vue3.0 verwendet das Plug-In vue-grid-layout, um Drag-Layout zu implementieren

Inhaltsverzeichnis 1. Plugins 2. Zwischenspiel 3....

So installieren Sie Docker auf CentOS

Hier stellen wir nur die relativ einfache Install...

Linux verwendet den Befehl lsof, um den Status des Dateiöffnens zu überprüfen

Vorwort Wir alle wissen, dass unter Linux „alles ...

Detaillierte Erläuterung der Laderegeln der require-Methode in node.js

Laderegeln der Require-Methode Laden aus dem Cach...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab

Mysql mehrere unabhängige Tabellen Abfragedaten u...

Beispielcode zur Trennung von Front-End und Back-End mit FastApi+Vue+LayUI

Inhaltsverzeichnis Vorwort Projektdesign hinteres...

jQuery-Plugin zum Erzielen eines Code-Rain-Effekts

In diesem Artikel wird der spezifische Code des j...

Docker führt Vorgänge mit dem angegebenen Speicher aus

wie folgt: -m, --memory Speicherlimit, das Format...