Lösung für das Problem des wiederholten Auslösens von Funktionen in der Vue-Projektüberwachung

Lösung für das Problem des wiederholten Auslösens von Funktionen in der Vue-Projektüberwachung

Problembeschreibung:

Es gibt zwei Seiten A und B, jede Seite hat eine getList() Methode. Beide Methoden müssen denselben Parameter C übergeben und der Vorgang der Auswahl des Parameters C ist ziemlich kompliziert. Um das Problem der wiederholten Auswahl von Parameter C beim Wechseln zwischen den Schnittstellen A und B zu vermeiden, speichere ich Parameter C in vuex und höre dann mit watch auf beiden Seiten auf Parameter C, um getList() auszuführen. Dann habe ich ein Problem festgestellt. Wenn ich nach dem Aufrufen von Seite A auf Seite B den Parameter C auf Seite B erneut auswähle, wird auch die Methode getList() von Seite A ausgeführt. Umgekehrt wird auch die Methode getList() von Seite B ausgeführt, wenn ich nach dem Aufrufen von Seite B auf Seite A den Parameter C auf Seite A ändere.

Später fand ich heraus, dass es an der Verwendung von Keep-Alive lag. Keep-Alive hält die Vue-Instanz immer im Speicher, sodass die Vue-Instanz immer existiert und die entsprechenden Watcher immer wirksam sind. Nachdem ich nach relevanten Informationen gesucht hatte, stellte ich fest, dass viele Leute auf dieses Problem gestoßen waren. Schließlich fand ich die folgenden zwei Lösungen:

Lösung 1

Bestimmen Sie, ob getList() über den Routerpfad ausgeführt werden soll

betrachten:
        irgendeinWert(neuerWert, alterWert) {
            if (this.$route.fullPath === 'Ein Seitenroutingpfad') {
                // etwas tun
            }
        }
    }

Lösung 2

Fügen Sie einen Flag-Parameter hinzu, um zu bestimmen, ob sich die Seite im aktiven Status befindet. Komponenten, die Keep-Alive-Caching verwenden, lösen nur activated und deactivated Ereignisse aus. Setzen Sie das Flag daher auf „true“ und „false“, wenn diese beiden Ereignisse ausgelöst werden. Nur wenn das Flag „true“ ist, wird getList() ausgeführt.

{
  Daten () {
    zurückkehren {
      aktiviertFlag: false
    };
  },
  betrachten:
    'irgendeinWert'(Wert) {
      wenn(val && this.activatedFlag) {
        dies.getlist();
      }
    }
  },
  aktiviert () {
    this.activatedFlag = wahr;
  },
  deaktiviert () {
    this.activatedFlag = falsch;
  }
}

Wenn viele Seiten vorhanden sind und die Funktionsnamen auf den einzelnen Seiten inkonsistent sind, können Sie den Überwachungsteil des obigen Codes entfernen, in ein Mixin schreiben und es dann auf der erforderlichen Seite importieren.

  importiere activeFlag aus "@/mixin/activeFlag";

  Standard exportieren {
    Mixins: [aktive Flagge],
    betrachten:
        'irgendeinWert'(Wert) {
          wenn(val && this.activatedFlag) {
            dies.getlistA();
            dies.getlistB();
          }
        }
      },
  }

Oben sind die Details der beiden Lösungen für das Problem des wiederholten Auslösens von Funktionen in der Vue-Projektüberwachung aufgeführt. Weitere Informationen zur Lösung des wiederholten Auslösens von Vue-Überwachungsfunktionen finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Lösung zum automatischen Auslösen von Klickereignissen beim Klicken auf ein Popup-Fenster in Vue (Simulationsszenario)
  • Lösen Sie das Auslöseproblem des Änderungsereignisses, wenn Vue ElementUI El-Select verwendet.
  • Detaillierte Erklärung des Ereignisses zum Auslösen von untergeordneten Komponenten durch Klicken auf Schaltflächen in übergeordneten Komponenten in Vue
  • Vue verhindert das Auslösen mehrerer Anfragen nach aufeinanderfolgenden Klicks in einem kurzen Zeitraum
  • Eine kurze Diskussion über die Auslösebedingungen von vue.watch
  • So realisieren Sie die automatische Auslösefunktion in Vue

<<:  So installieren Sie mehrere mysql5.7.19 (tar.gz)-Dateien unter Linux

>>:  Seltsame und interessante Docker-Befehle, die Sie vielleicht nicht kennen

Artikel empfehlen

Vergleich der Leistung von int, char und varchar in MySQL

Im Internet kursieren viele scheinbar wahre „Gerü...

Detaillierte Erläuterung der MySQL-Multitabellen-Joinabfrage

Inhaltsverzeichnis Abfrage zum Verbinden mehrerer...

Mit CSS3 lässt sich ein umdrehbarer Hover-Effekt erzielen

CSS3 implementiert einen umdrehbaren Hover-Effekt...

Dinge, die Sie nicht über die CSS-Pseudoelemente ::before und ::after wissen

CSS hat zwei Pseudoklassen, die nicht häufig verw...

VUE implementiert eine Timeline-Wiedergabekomponente

In diesem Artikelbeispiel wird der spezifische Co...

Umfassender Vergleich und Bewertung des Vue-Code-Hervorhebungs-Plugins

Inhaltsverzeichnis Umfassender Vergleich Aus der ...

HTML-Tutorial: Sammlung häufig verwendeter HTML-Tags (5)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

Die MySQL-Partitionstabelle ist nach Monaten klassifiziert

Inhaltsverzeichnis Erstellen einer Tabelle Zeigen...