Inhaltsverzeichnis
Global before Guard
Global Resolution Guard
Für das Routing exklusive Guards
Guards innerhalb von Komponenten
Navigationsanalysevorgang abschließen
Heim Web-Frontend Front-End-Fragen und Antworten Was sind die Navigationswächter von Vue?

Was sind die Navigationswächter von Vue?

Dec 22, 2021 pm 06:31 PM
vue

Navigationswächter umfassen: 1. Globaler Frontwächter „beforeEach“; 2. Globaler Parsingwächter „beforeResolve“; 3. Routenexklusiver Wächter „beforeEnter“;

Was sind die Navigationswächter von Vue?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Vue-Version 2.9.6, DELL G3-Computer. Der von

vue-router bereitgestellte Navigationsschutz wird hauptsächlich zum Schutz der Navigation durch Springen oder Abbrechen verwendet. Es gibt mehrere Möglichkeiten, den Routennavigationsprozess zu integrieren: global, exklusiv für eine einzelne Route oder auf Komponentenebene.

Denken Sie daran, dass Änderungen an Parametern oder Abfragen keine Ein-/Ausstiegs-Navigationsschutze auslösen. Sie können auf diese Änderungen reagieren, indem Sie das $route-Objekt beobachten oder den komponenteninternen Schutz beforeRouteUpdate verwenden.

Global before Guard

Sie können router.beforeEach verwenden, um einen globalen Before Guard zu registrieren:

const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
  // ...
})
Nach dem Login kopieren

Wenn eine Navigation ausgelöst wird, wird der globale Before Guard in der Reihenfolge der Erstellung aufgerufen. Guards werden asynchron analysiert und ausgeführt. Zu diesem Zeitpunkt wartet die Navigation, bis alle Guards aufgelöst sind.

Jede Schutzmethode erhält drei Parameter:

  • zu: Route: das Zielroutenobjekt, das gerade betreten wird

  • von: Route: die Route, die die aktuelle Navigation verlassen wird

  • nächster: Funktion: bestimmte Diese Methode muss aufgerufen werden, um diesen Hook aufzulösen. Der Ausführungseffekt hängt von den Aufrufparametern der nächsten Methode ab.

    • next(): Fahren Sie mit dem nächsten Hook in der Pipeline fort. Wenn alle Hooks ausgeführt werden, wird der Navigationsstatus bestätigt.

    • next(false): Aktuelle Navigation unterbrechen. Wenn sich die URL des Browsers ändert (vielleicht manuell durch den Benutzer oder über die Zurück-Schaltfläche des Browsers), wird die URL-Adresse auf die Adresse zurückgesetzt, die der Von-Route entspricht.

    • next('/') oder next({ path: '/' }): Zu einer anderen Adresse springen. Die aktuelle Navigation wird unterbrochen und eine neue Navigation gestartet. Sie können ein beliebiges Standortobjekt an next übergeben und Optionen wie „replace: true“, „name: ‚home‘“ und alle Optionen, die in „router-link“ an „prop“ oder „router.push“ verwendet werden, dürfen festgelegt werden.

    • next(error): (2.4.0+) Wenn der an next übergebene Parameter eine Fehlerinstanz ist, wird die Navigation beendet und der Fehler an den von router.onError() registrierten Rückruf übergeben.

Stellen Sie sicher, dass die nächste Funktion in jedem Navigationsschutz genau einmal aufgerufen wird. Er kann mehr als einmal vorkommen, aber nur, wenn sich nicht alle logischen Pfade überschneiden, sonst wird der Hook nie geparst oder es wird ein Fehler gemeldet. Hier ist ein Beispiel für die Umleitung zu /login, wenn die Authentifizierung des Benutzers fehlschlägt:

// BAD
router.beforeEach((to, from, next) => {
  if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
  // 如果用户未能验证身份,则 `next` 会被调用两次
  next()
})
// GOOD
router.beforeEach((to, from, next) => {
  if (to.name !== 'Login' && !isAuthenticated) next({ name: 'Login' })
  else next()
})
Nach dem Login kopieren

Global Resolution Guard

Neu in 2.5.0

In 2.5.0+ können Sie einen mit router.beforeResolve Global Guard registrieren. Dies ähnelt router.beforeEach, mit der Ausnahme, dass der Parsing-Guard aufgerufen wird, bevor die Navigation bestätigt wird und nachdem alle komponenteninternen Guards und asynchronen Routenkomponenten analysiert wurden.

Für das Routing exklusive Guards

Sie können Guards direkt vor der Eingabe in die Routing-Konfiguration definieren:

const router = new VueRouter({
  routes: [
    {
      path: '/foo',
      component: Foo,
      beforeEnter: (to, from, next) => {
        // ...
      }
    }
  ]
})
Nach dem Login kopieren

Die Methodenparameter dieser Guards sind die gleichen wie die der globalen Frontguards.

Guards innerhalb von Komponenten

Schließlich können Sie die folgenden Routennavigations-Guards direkt in der Routing-Komponente definieren:

  • beforeRouteEnter

  • beforeRouteUpdate (neu in. 2.2)

  • beforeRoute Gehen

const Foo = {
  template: `...`,
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
  },
  beforeRouteUpdate(to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
  }
}
Nach dem Login kopieren

Der beforeRouteEnter-Guard kann darauf nicht zugreifen, da der Guard aufgerufen wird, bevor die Navigation bestätigt wurde, sodass die neue Komponente, die bald angezeigt wird, noch nicht erstellt wurde.

Sie können jedoch auf die Komponenteninstanz zugreifen, indem Sie einen Rückruf an next übergeben. Führen Sie den Rückruf aus, wenn die Navigation bestätigt wird, und übergeben Sie die Komponenteninstanz als Parameter der Rückrufmethode.

beforeRouteEnter (to, from, next) {
  next(vm => {
    // 通过 `vm` 访问组件实例
  })
}
Nach dem Login kopieren

Beachten Sie, dass beforeRouteEnter der einzige Wächter ist, der die Weiterleitung von Rückrufen an next unterstützt. Für beforeRouteUpdate und beforeRouteLeave ist dies bereits verfügbar, sodass die Übergabe von Rückrufen nicht unterstützt wird, da dies nicht erforderlich ist.

beforeRouteUpdate (to, from, next) {
  // just use `this`
  this.name = to.params.name
  next()
}
Nach dem Login kopieren

Dieser Abwesenheitsschutz wird normalerweise verwendet, um zu verhindern, dass Benutzer plötzlich gehen, bevor sie Änderungen speichern. Diese Navigation kann mit next(false) abgebrochen werden.

beforeRouteLeave (to, from, next) {
  const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
  if (answer) {
    next()
  } else {
    next(false)
  }
}
Nach dem Login kopieren
  • Navigation wird ausgelöst.

  • Rufen Sie den beforeRouteLeave-Guard in der deaktivierten Komponente auf.

  • Rufen Sie vor jeder Wache die globale Wache an.

  • Call beforeRouteUpdate Guard (2.2+) in wiederverwendeten Komponenten.

  • Vorher anrufenIn der Routing-Konfiguration eingeben.

  • Asynchrone Routing-Komponenten auflösen.

  • Call beforeRouteEnter in der aktivierten Komponente.

  • Rufen Sie den globalen Schutz vor Resolve auf (2.5+).

  • Navigation bestätigt.

  • Rufen Sie den globalen AfterEach-Hook auf.

  • DOM-Update auslösen.

  • Rufen Sie die Rückruffunktion auf, die im beforeRouteEnter-Schutz an next übergeben wird, und die erstellte Komponenteninstanz wird als Parameter der Rückruffunktion übergeben.

【Verwandte Empfehlung: „vue.js Tutorial“】

Das obige ist der detaillierte Inhalt vonWas sind die Navigationswächter von Vue?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So verweisen Sie auf die JS -Datei mit Vue.js So verweisen Sie auf die JS -Datei mit Vue.js Apr 07, 2025 pm 11:27 PM

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

So verwenden Sie Bootstrap in Vue So verwenden Sie Bootstrap in Vue Apr 07, 2025 pm 11:33 PM

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

So verwenden Sie Watch in Vue So verwenden Sie Watch in Vue Apr 07, 2025 pm 11:36 PM

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

Vue realisiert Festzelt-/Text -Scrolling -Effekt Vue realisiert Festzelt-/Text -Scrolling -Effekt Apr 07, 2025 pm 10:51 PM

Implementieren Sie Marquee/Text-Scrolling-Effekte in VUE unter Verwendung von CSS-Animationen oder Bibliotheken von Drittanbietern. In diesem Artikel wird die Verwendung von CSS -Animation vorgestellt: Bildlauftext erstellen und Text mit & lt; div & gt;. Definieren Sie CSS -Animationen und setzen Sie Überlauf: Versteckt, Breite und Animation. Definieren Sie Keyframes, setzen Sie Transformation: Translatex () am Anfang und am Ende der Animation. Passen Sie die Animationseigenschaften wie Dauer, Bildlaufgeschwindigkeit und Richtung an.

Was bedeutet es für faule Ladungsvue? Was bedeutet es für faule Ladungsvue? Apr 07, 2025 pm 11:54 PM

In Vue.js können Komponenten oder Ressourcen bei Bedarf dynamisch geladen werden, wodurch die Ladezeit der Anfangsseite dynamisch geladen und die Leistung verbessert wird. Die spezifische Implementierungsmethode umfasst die Verwendung & lt; Keep-Alive & GT; und & lt; Komponente ist & gt; Komponenten. Es ist zu beachten, dass fauler Laden FOUC -Probleme (Splace Screen) verursachen kann und nur für Komponenten verwendet werden sollte, die eine faule Belastung erfordern, um unnötige Leistungsaufwand zu vermeiden.

So fragen Sie die Version von Vue So fragen Sie die Version von Vue Apr 07, 2025 pm 11:24 PM

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.

So kehren Sie von Vue zur vorherigen Seite zurück So kehren Sie von Vue zur vorherigen Seite zurück Apr 07, 2025 pm 11:30 PM

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

So fügen Sie Funktionen zu Schaltflächen für Vue hinzu So fügen Sie Funktionen zu Schaltflächen für Vue hinzu Apr 08, 2025 am 08:51 AM

Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

See all articles