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

jQuery implementiert dynamische Tag-Ereignisse

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

HTML-Head-Tag-Metadaten zum Erreichen einer Aktualisierungsumleitung

Code kopieren Der Code lautet wie folgt: <html...

Asynchrone JS ES6-Lösung

Inhaltsverzeichnis Erste Verwendung der Callback-...

Vue implementiert nahtloses Scrollen von Listen

In diesem Artikelbeispiel wird der spezifische Co...

Gespeicherte MySQL-Prozeduren und allgemeine Funktionscodeanalyse

Das Konzept der gespeicherten MySQL-Prozedur: Ein...

Natives JS zur Implementierung der Drag-Position-Vorschau

In diesem Artikel wird eine kleine Demo gezeigt, ...

Remote-Entwicklung mit VSCode und SSH

0. Warum brauchen wir Remote-Entwicklung? Bei der...

Methode zum Erkennen, ob IP und Port verbindbar sind

Windows cmd Telnet Format: Telnet-IP-Port Fall: T...

SQL-Implementierung von LeetCode (196. Doppelte Postfächer löschen)

[LeetCode] 196.Doppelte E-Mails löschen Schreiben...

Analyse des Implementierungsprinzips von Vue-Anweisungen

Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...

Beispiel für die Implementierung des Lastausgleichs mit Nginx+SpringBoot

Einführung in den Lastenausgleich Bevor wir die L...

Installieren Sie Memcached und die PHP Memcached-Erweiterung unter CentOS

In Bezug auf das leistungsstarke verteilte Speich...