首頁 web前端 js教程 Vue路由鉤子及應用場景小結分享

Vue路由鉤子及應用場景小結分享

Jan 19, 2018 pm 02:00 PM
場景 應用

本文主要介紹了詳解Vue路由鉤子及應用場景(小結),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

F. 路由鉤子語法

在vue-router的官方文件中, 將路由鉤子翻譯為導航守衛, 下面是文檔中的內容摘要, 大家也可以透過傳送門前往官網閱讀詳細內容

路由鉤子

路由鉤子主要是給用戶在路由發生變化時進行一些特殊的處理而定義的,靠。 。好拗口啊。

總體來講vue裡面提供了三大類鉤子

#1、全域鉤子
2、某個路由獨享的鉤子
3、元件內鉤子

三種路由鉤子中都涉及到了三個參數,這裡直接上官方介紹吧

to: Route: 即將要進入的目標路由物件
from: Route: 目前導覽正要離開的路由
next: Function: 一定要呼叫該方法來resolve 這個鉤子。執行效果依賴 next 方法的呼叫參數。
next(): 進行管道中的下一個鉤子。如果全部鉤子執行完了,則導航的狀態就是 confirmed (確認的)。
next(false): 中斷目前的導航。如果瀏覽器的 URL 改變了(可能是使用者手動或瀏覽器後退按鈕),那麼 URL 位址會重設到 from 路由對應的位址。
next(‘/') 或 next({ path: ‘/' }): 跳到一個不同的位址。目前的導航被中斷,然後進行一個新的導航。

(一).全域守衛(全域路由鉤子)

你可以使用router.beforeEach 註冊一個全域前置守衛:

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
 // ...
 next()
})
登入後複製

每個守衛方法接受三個參數:

  1. to: Route: 即將要進入的目標路由物件

  2. from: Route: 目前導覽正要離開的路由

  3. next: Function: 一定要呼叫該方法來resolve 這個鉤子。執行效果依賴next 方法的呼叫參數

注意:使用全域路由鉤子, 一定要呼叫next()!!!

##(二).路由獨享的守衛(路由內鉤子)

你可以在路由配置上直接定義beforeEnter 守衛:

const router = new VueRouter({
 routes: [
  {
   path: '/foo',
   component: Foo,
   beforeEnter: (to, from, next) => {
    // ...
   }
  }
 ]
})
登入後複製
這些守衛與全域前置守衛的方法參數是一樣的。

(三). 元件內的守衛(元件內鉤子)

最後, 你可以在路由元件中直接定義一下路由導航守衛:

  1. beforeRouteEnter

  2. beforeRouteUpdate (2.2 新增)

  3. beforeRouteLeave

  4. 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`
     }
    }
    登入後複製
二.路由鉤子在實際開發中的應用場景

路由鉤子在實際的開發過程中使用較少, 我在實際的項目中只在組件內使用過beforeRouteLeave, 使用場景分別為一下三類情況:

(一) 清除目前元件中的定時器

當一個元件中有一個定時器時, 在路由進行切換的時候, 可使用beforeRouteLeave將定時器進行清楚, 以免佔用內存:

beforeRouteLeave (to, from, next) {
 window.clearInterval(this.timer) //清楚定时器
 next()
}
登入後複製
(二) 當頁面中有未關閉的視窗, 或未儲存的內容時, 阻止頁面跳轉

#如果頁面內有重要的資訊需要使用者儲存後才能進行跳轉, 或有彈出框的情況. 應該阻止用戶跳轉

 beforeRouteLeave (to, from, next) {
 //判断是否弹出框的状态和保存信息与否
 if (this.dialogVisibility === true) {
  this.dialogVisibility = false //关闭弹出框
  next(false) //回到当前页面, 阻止页面跳转
 }else if(this.saveMessage === false) {
  alert('请保存信息后退出!') //弹出警告
  next(false) //回到当前页面, 阻止页面跳转
 }else {
  next() //否则允许跳转
 }
}
登入後複製
(三) 保存相關內容到Vuex中或Session中

當用戶需要關閉頁面時, 可以將公用的資訊儲存到session或Vuex中

 beforeRouteLeave (to, from, next) {
  localStorage.setItem(name, content); //保存到localStorage中
  next()
}
登入後複製
相關推薦:


#vue路由跳轉時判斷使用者是否登入功能

詳解vue路由嵌套的SPA實作步驟

總結Vue路由跳轉問題的實例教學#

以上是Vue路由鉤子及應用場景小結分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

自動駕駛場景中的長尾問題怎麼解決? 自動駕駛場景中的長尾問題怎麼解決? Jun 02, 2024 pm 02:44 PM

昨天面試被問到了是否做過長尾相關的問題,所以就想著簡單總結一下。自動駕駛長尾問題是指自動駕駛汽車中的邊緣情況,即發生機率較低的可能場景。感知的長尾問題是目前限制單車智慧自動駕駛車輛運行設計域的主要原因之一。自動駕駛的底層架構和大部分技術問題已經解決,剩下的5%的長尾問題,逐漸成了限制自動駕駛發展的關鍵。這些問題包括各種零碎的場景、極端的情況和無法預測的人類行為。自動駕駛中的邊緣場景"長尾"是指自動駕駛汽車(AV)中的邊緣情況,邊緣情況是發生機率較低的可能場景。這些罕見的事件

如何在iPhone中撤銷從主畫面中刪除 如何在iPhone中撤銷從主畫面中刪除 Apr 17, 2024 pm 07:37 PM

從主畫面中刪除了重要內容並試圖將其取回?您可以透過多種方式將應用程式圖示放回螢幕。我們已經討論了您可以遵循的所有方法,並將應用程式圖示放回主畫面如何在iPhone中撤消從主畫面中刪除正如我們之前提到的,有幾種方法可以在iPhone上恢復此變更。方法1–替換應用程式庫中的應用程式圖示您可以直接從應用程式庫將應用程式圖示放置在主畫面上。步驟1–橫向滑動以尋找應用程式庫中的所有應用程式。步驟2–找到您先前刪除的應用程式圖示。步驟3–只需將應用程式圖示從主庫拖曳到主畫面上的正確位置即可。這是將應用程式圖

PHP中箭頭符號的作用及實作應用 PHP中箭頭符號的作用及實作應用 Mar 22, 2024 am 11:30 AM

PHP中箭頭符號的作用及實踐應用在PHP中,箭頭符號(->)通常用於存取物件的屬性和方法。物件是PHP中物件導向程式設計(OOP)的基本概念之一,在實際開發中,箭頭符號在操作物件時發揮重要作用。本文將介紹箭頭符號的作用以及實踐應用,並提供具體的程式碼範例來幫助讀者更好地理解。一、箭頭符號的作用存取物件的屬性箭頭符號可以用來存取物件的屬性。當我們實例化一個對

從入門到精通:探索Linux tee命令的各種應用場景 從入門到精通:探索Linux tee命令的各種應用場景 Mar 20, 2024 am 10:00 AM

Linuxtee命令是一個非常有用的命令列工具,它可以在不影響已有輸出的情況下,將輸出寫入檔案或將輸出送到另一個命令。在本文中,我們將深入探索Linuxtee命令的各種應用場景,從入門到精通。 1.基本用法首先,我們來看看tee指令的基本用法。 tee指令的語法如下:tee[OPTION]...[FILE]...該指令會從標準輸入讀取數據,並將數據

探索Go語言的優勢及應用場景 探索Go語言的優勢及應用場景 Mar 27, 2024 pm 03:48 PM

Go語言是一種由Google開發的開源程式語言,於2007年首次發布。它被設計成一種簡單易學、高效、並發性強的語言,受到越來越多開發者的青睞。本文將探討Go語言的優勢,並介紹一些適合Go語言的應用場景,同時給出具體的程式碼範例。優勢並發性強:Go語言內建支援輕量級執行緒-goroutine,能夠輕鬆實現並發程式設計。透過使用go關鍵字就可以啟動goroutin

Linux系統這些壓測工具,你有用過嗎? Linux系統這些壓測工具,你有用過嗎? Mar 21, 2024 pm 04:12 PM

身為維運人員,你是否遇過這種場景?需要用工具測試系統cpu或記憶體佔用高來觸發告警,或透過壓測測試服務的同時能力。身為維運工程師,也可以透過這些指令復現故障場景。那麼透過本文可以讓你掌握常用的測試指令和工具。一、前言在某些情況下,為了定位和復現專案中的問題,必須使用工具進行系統性壓力測試,以模擬和還原故障場景。這時測試或壓測工具就變得特別重要。接下來,我們將根據不同的場景來探討這些工具的使用。二、測試工具2.1網路限速工具tctc是Linux中用來調整網路參數的命令列工具,可用來模擬各種網

Linux在雲端運算領域的廣泛應用 Linux在雲端運算領域的廣泛應用 Mar 20, 2024 pm 04:51 PM

Linux在雲端運算領域的廣泛應用隨著雲端運算技術的不斷發展和普及,Linux作為一種開源作業系統在雲端運算領域中發揮重要作用。由於其穩定性、安全性和靈活性,Linux系統被廣泛應用於各種雲端運算平台和服務中,為雲端運算技術的發展提供了堅實的基礎。本文將介紹Linux在雲端運算領域的廣泛應用,並給出具體的程式碼範例。一、Linux在雲端運算平台中的應用虛擬化技術虛擬化技術

理解MySQL時間戳記:功能、特性與應用場景 理解MySQL時間戳記:功能、特性與應用場景 Mar 15, 2024 pm 04:36 PM

MySQL時間戳記是十分重要的資料類型,它可以儲存日期、時間或日期加時間。在實際的開發過程中,合理地使用時間戳記可以提高資料庫操作的效率,並且方便進行時間相關的查詢和計算。本文將從MySQL時間戳記的功能、功能和應用場景等面向展開探討,並結合具體的程式碼範例來講解。一、MySQL時間戳記的功能與特性MySQL中有兩種類型的時間戳,一種是TIMESTAMP

See all articles