Heim  >  Artikel  >  Web-Frontend  >  Wie kann das Problem „NavigationDuplicated: Redundante Navigation zum aktuellen Standort vermieden“ gelöst werden, wenn Vue-Router in einer Vue-Anwendung verwendet wird?

Wie kann das Problem „NavigationDuplicated: Redundante Navigation zum aktuellen Standort vermieden“ gelöst werden, wenn Vue-Router in einer Vue-Anwendung verwendet wird?

PHPz
PHPzOriginal
2023-06-24 18:19:424004Durchsuche

Vue.js ist ein beliebtes JavaScript-Framework. Es bietet viele Funktionen und Tools zum Erstellen von Single-Page-Webanwendungen. Vue-Router ist ein häufig verwendetes Routing-Management-Tool in Vue.js. Es hilft uns, Routing in Single Page Applications (SPA) zu implementieren.

Bei Verwendung von Vue-Router kann jedoch der Fehler „NavigationDuplicated: Redundante Navigation zum aktuellen Standort vermieden“ auftreten. Dieses Problem tritt normalerweise auf, wenn der Benutzer wiederholt auf den Routing-Pfad klickt. In diesem Fall fordert vue-router „Wiederholten Zugriff auf den aktuellen Standort vermeiden“ auf.

Warum tritt dieser Fehler auf? Dies liegt daran, dass Vue-Router erkennt, dass Benutzer wiederholt auf dieselbe Adresse zugreifen, was zu Problemen beim Laden von Seitenkomponenten führen kann. Daher stoppt der Navigationsschutz im Vue-Router das Laden der Seite, um eine wiederholte Navigation zu vermeiden.

Also, wie kann man dieses Problem lösen?

1. Navigationsschutz deaktivieren

Die erste Methode besteht darin, den Navigationsschutz im Vue-Router zu deaktivieren. Dieser Ansatz kann unsere Routenverwaltung beeinträchtigen, da Navigationswächter eine sehr leistungsstarke Funktion sind, die uns beim Wechseln zwischen verschiedenen Routen und beim Verwalten des Routenstatus, der Berechtigungen usw. helfen kann. In manchen Fällen kann das Deaktivieren der Navigationswächter jedoch eine wirksame Möglichkeit sein, das Problem zu lösen.

Um Navigationswächter zu deaktivieren, müssen wir sie nur in der Routing-Konfiguration entfernen:

const router = new VueRouter({
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About },
    { path: '/contact', component: Contact },
  ],
  mode: 'history',
  base: process.env.BASE_URL,
  scrollBehavior (to, from, savedPosition) {
    return { x: 0, y: 0 }
  }
})

2. Lösung

Die zweite Methode besteht darin, dieses Problem zu lösen und gleichzeitig die Funktionalität von Navigationswächtern beizubehalten. Es gibt zwei Lösungen:

1. Verwenden Sie die Catch-Methode.

Die Catch-Methode ist eine von vue-router bereitgestellte Methode. Wenn während der Ausführung des Navigationsschutzes ein Fehler auftritt, wird die Catch-Methode aufgerufen. Wir können in der Catch-Methode einen falschen Wert zurückgeben, um ein Zurückspringen zur aktuellen Seite zu vermeiden.

router.beforeEach((to, from, next) => {
  if (to.path === from.path) {
    next(false)
  } else {
    next()
  }
})

Auf diese Weise können wir eine wiederholte Navigation vermeiden, wenn der Benutzer dieselbe Adresse wiederholt besucht.

2. Verwenden Sie die Ersetzungsmethode

Die Ersetzungsmethode ist eine bessere Lösung. Diese Methode kann zur gleichen Adresse umleiten, ohne den Navigationsschutz auszulösen. Wir müssen die Ersetzungsmethode nur in der Sprungmethode der Route verwenden, um eine wiederholte Navigation zu vermeiden.

this.$router.replace(to)

Auf diese Weise wird jedes Mal, wenn der Benutzer klickt, um zur gleichen Route zu springen, die aktuelle Route durch eine neue Route ersetzt, ohne dass doppelte Komponenten geladen werden. Dadurch werden Probleme mit Navigationswächtern vermieden.

Der Fehler „NavigationDuplicated: Redundante Navigation zum aktuellen Standort vermieden“ ist ein sehr häufiges Problem bei der Verwendung von vue-router in Vue-Anwendungen. Wir können wählen, ob wir Navigationsschutz deaktivieren, die Catch-Methode verwenden oder die Ersetzungsmethode verwenden möchten, um dieses Problem entsprechend unseren Anforderungen zu lösen.

Das obige ist der detaillierte Inhalt vonWie kann das Problem „NavigationDuplicated: Redundante Navigation zum aktuellen Standort vermieden“ gelöst werden, wenn Vue-Router in einer Vue-Anwendung verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn