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
Beim Erstellen einer Website habe ich festgestellt...
Doctype ist einer davon: <!DOCTYPE HTML PUBLIC ...
Da der Datenbindungsmechanismus von Vue und ander...
Ich habe mich schon immer für drahtlose Interakti...
Inhaltsverzeichnis 1. Zeitüberwachung 2. Ereignis...
1. Umweltvorbereitung: Betriebssystem: CentOS Lin...
Inhaltsverzeichnis So stellen Sie den MySQL-Diens...
Inhaltsverzeichnis 1. Schematische Darstellung de...
Stichwörter Allgemein Der Titel darf keine Wörter...
Dieser Artikel veranschaulicht anhand von Beispie...
1. Überprüfen Sie den Firewall-Status Überprüfen ...
vsftpd Übersicht vsftpd ist die Abkürzung für „ve...
In diesem Artikel wird ein mit nativem JS impleme...
1. Grammatik: <meta name="Name" conte...
Ich habe im ersten Halbjahr des letzten Jahres an...