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 1. KartenmethodeDie grundlegende Methode zur Statusextraktion in Vuex kann auf folgende Arten verwendet werden: berechnet(){ zählen(){ gib dies zurück.$store.count } } Gleichzeitig bemerkte 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. AnwendungDieser 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 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:
|
<<: Beispiel für HTML-Abschirmung des Rechtsklickmenüs und der Linksklick-Eingabefunktion
>>: Lösen Sie das Problem der Angabe der UDP-Portnummer im Docker
MySQL-Leistungsoptimierung Die MySQL-Leistungsopt...
Inhaltsverzeichnis 1. Hintergrund 2. Anweisungen ...
Docker-Übersicht Docker ist eine Open-Source-Lösu...
Kaufzertifikat Sie können es beim Cloud Shield Ce...
1. Festplattenpartition: 2. fdisk-Partition Wenn ...
Inhaltsverzeichnis Vorwort Mischen Mixin-Hinweis ...
In diesem Artikelbeispiel wird der spezifische Co...
Ubuntu 16.04 installiert standardmäßig die PHP7.0...
Inhaltsverzeichnis Was ist eine relationale Daten...
In diesem Artikel finden Sie ein grafisches Tutor...
Anruf Wie rufe ich die Amap-API auf? Das offiziel...
1. Laden Sie das Installationspaket mysql-5.7.17-...
Zusammenfassung der allgemeinen Funktionen von re...
1. Log4j zur Protokollsegmentierung 1) Bereiten S...
Karussellanzeige der Vue-Karte beim Umschalten de...