Vue路由鉤子完全指南

Vue.js中的路由導航鉤子(Navigation Guards)主要用于在路由導航過程中進行攔截和處理,確保訪問控制和狀態管理。以下是主要分類及使用方法:

1. 全局鉤子函數

作用于整個路由實例,需在路由配置外定義:

  • beforeEach:在導航開始時執行,用于全局權限校驗(如登錄驗證)。
    示例代碼:
    router.beforeEach((to, from, next) => {if (to.meta.requiresAuth && !isAuthenticated) {next('/login'); // 重定向到登錄頁} else {next(); // 繼續導航}
    });
    
  • beforeResolve:在所有組件內守衛和異步路由解析后觸發,適用于需等待數據加載的場景。
  • afterEach:導航結束后調用,無next參數,常用于日志記錄或頁面追蹤。
    示例:
    router.afterEach((to, from) => {console.log(`Navigated to: ${to.path}`);
    });
    

2. 路由獨享守衛

在單個路由配置中定義,僅對特定路由生效:

  • beforeEnter:在進入該路由前執行,參數與beforeEach一致。
    示例代碼:
    const routes = [{path: '/user/:id',component: User,beforeEnter: (to, from, next) => {if (!checkPermission(to.params.id)) {next('/denied'); // 權限不足時攔截} else {next();}}}
    ];
    

3. 組件內鉤子

直接在Vue組件中定義,控制組件級導航邏輯:

  • beforeRouteEnter:進入路由前調用,此時組件實例未創建,無法訪問this,但可通過next(vm => {})訪問實例。
    示例代碼:
    export default {beforeRouteEnter(to, from, next) {next(vm => {vm.fetchData(); // 進入后初始化數據});}
    };
    
  • beforeRouteUpdate:當前路由參數變化時觸發(如/user/1/user/2),用于響應式更新數據。
  • beforeRouteLeave:離開路由前調用,防止用戶誤操作丟失數據(如未保存表單)。
    示例:
    export default {beforeRouteLeave(to, from, next) {if (this.hasUnsavedChanges) {if (confirm('數據未保存,確認離開?')) next();else next(false); // 取消導航} else next();}
    };
    

關鍵使用原則

  • 順序執行:鉤子按“全局 → 獨享 → 組件內”順序觸發,next()必須調用以繼續或終止導航。
  • 參數說明
    • to:目標路由對象。
    • from:當前路由對象。
    • next:控制導航流程的方法(next()放行,next(false)終止,next(path)重定向)。
  • 避免阻塞:確保鉤子邏輯簡潔,避免長時間異步操作阻塞渲染。

這些鉤子靈活集成于Vue Router,可實現細粒度的路由控制。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916951.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916951.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916951.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RAGFlow 登錄界面點擊登錄無反應,控制臺報錯 502 Bad Gateway 解決方法

遇到的問題 在使用RAGFlow的時候,登錄不進去,但是之前能登錄。 還出現了輸入地址直接進入工作界面,但是進行不了任何操作的bug;以及無法上傳文檔的問題(其實都是因為沒登錄)。 登陸界面報錯如圖顯示。 …

數據結構第3問:什么是線性表?

線性表 線性表由具有相同數據類型的n個元素構成,這些元素之間存在一一對應的線性關系。其中n為表長,當n0的時候線性表是一個空表。簡單來說,線性表中的元素排列成一條線,每個元素最多有一個直接的前驅和后繼(除第一個和…

常見CMS 靶場復現

一、wordpass1.修改模版文件getshell搭建網站登錄網站后臺更改網站模版的相關文件寫入一句話木馬憑借路徑訪問/wp-content/themes/twentyfifteen/404.php/?aphpinfo();2.上傳夾帶木馬的主題getshell外觀-->主題-->添加-->上傳-->瀏覽-->安裝-->訪問木馬文件…

Elasticsearch - 倒排索引原理和簡易實現

倒排索引的功能設計倒排索引(Inverted Index)是一種高效的數據結構,常用于全文搜索和信息檢索系統。它的核心思想是將文檔中每個關鍵字(term)與包含該關鍵字的文檔列表進行映射。以下是實現倒排索引功能的設計步驟和代…

C#開發的Panel里控件拖放例子 - 開源研究系列文章

上次寫了Panel的分頁滾動控件( C#開發的Panel滾動分頁控件(滑動版) - 開源研究系列文章 - Lzhdims Fashion - 博客園 ),但是主要是想寫一個Panel里控件拖放的效果,然后分頁控件用于Panel里控件的分頁。此文這次寫的是控件拖放效果…

Thinkph6中常用的驗證方式實例

我們在使用thinkphp6中的數據驗證時,如果使用不多的話,會經常遇到校驗不對,在這個小問題上折騰很多,索引就不用了。我還不如直接寫if條件來的迅捷!!下面把常見的校驗方法進行一下整理:protected…

分享一個FPGA寄存器接口自動化工具

FPGA模塊越寫越多,規范性和可移植性卻堪憂。要是有一個工具可以根據模塊接口描述文件生成verilog和c頭文件就好了。苦苦搜尋找到了幾款免費的工具,SystemRDL、cheby和rggen。筆者學習了下cheby和reksio,reksio是gui版的cheby,這是…

小程序中事件對象的屬性與方法

在小程序中,事件處理函數的參數為事件對象(通常命名為 e),包含了事件相關的詳細信息(如事件類型、觸發元素、傳遞的數據等)。事件對象的屬性和方法因事件類型(如點擊、輸入、觸摸等)…

使用寶塔“PostgreSQL管理器”安裝的PostgreSQL,如何設置遠程連接?

安裝 PostgreSQL 使用寶塔“PostgreSQL管理器”安裝PostgreSQL,版本可以根據自己的需求來選擇,我這里使用的是16.1 創建數據庫 根據下圖所示步驟創建數據庫,其中 “訪問權限”一定要選擇“所有人”啟用遠程連接設置允許所有 IP 連接 listen_a…

論文:M矩陣

M矩陣是線性代數中的一個概念,它是一種特殊類型的矩陣,具有以下性質:非負的非對角線元素:矩陣的所有非對角線元素都是非負的,即對于矩陣MMM中的任意元素mijm_{ij}mij?,當i≠ji\neq jij時,有m…

跳躍表可視化深度解析:動態演示數據結構核心原理

跳躍表可視化深度解析:動態演示數據結構核心原理 一、跳躍表基礎概念與核心優勢 跳躍表(SkipList)是一種基于多層索引鏈表的數據結構,通過概率平衡實現高效的插入、刪除和查找操作。其核心優勢體現在: ?時間復雜度優…

《Sentinel服務保護實戰:控制臺部署與SpringCloud集成指南》

sentinel 介紹 Sentinel是阿里巴巴開源的一款服務保護框架,目前已經加入SpringCloudAlibaba中。官方網站: home | Sentinel Sentinel 的使用可以分為兩個部分: 核心庫(Jar包):不依賴任何框架/庫,能夠運行…

IBM Watsonx BI:AI賦能的下一代商業智能平臺

產品概覽 IBM Watsonx BI 是基于 watsonx 企業級 AI 與數據平臺 構建的智能分析解決方案,專為現代化企業打造。它深度融合人工智能技術,突破傳統 BI 工具的限制,通過自動化數據洞察、自然語言交互和預測分析,幫助企業在復雜數據環…

Python實現GO鵝優化算法優化GBRT漸進梯度回歸樹回歸模型項目實戰

說明:這是一個機器學習實戰項目(附帶數據代碼文檔),如需數據代碼文檔可以直接到文章最后關注獲取 或者私信獲取。 1.項目背景 隨著大數據和人工智能技術的快速發展,回歸預測在金融、氣象、能源等多個領域中扮演著至關…

深度學習計算(深度學習-李沐-學習筆記)

層和塊 單一輸出的線性模型:單個神經網絡 (1)接受一些輸入; (2)生成相應的標量輸出; (3)具有一組相關 參數(parameters),更新這些參數…

leetcode熱題——搜索二維矩陣Ⅱ

目錄 搜索二維矩陣Ⅱ 題目描述 題解 解法一:暴力搜索 C 代碼實現 復雜度分析 解法二:二分查找 C 代碼實現 復雜度分析 解法三:Z字形查找 算法核心思想 算法步驟詳解 C 代碼實現 復雜度分析 搜索二維矩陣Ⅱ 題目描述 編寫一個…

牛客 - 數組中的逆序對

描述 在數組中的兩個數字,如果前面一個數字大于后面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個數組中的逆序對的總數P。并將P對1000000007取模的結果輸出。 即輸出P mod 1000000007 數據范圍: 對于 50% 的數據, size≤104 s…

Linux 日志管理與時鐘同步詳解

Linux 日志管理與時鐘同步詳解 一、日志管理 1. 日志服務概述 Linux 系統中主要有兩種日志服務,分別負責臨時和永久日志的管理: systemd-journald:存儲臨時日志,服務器重啟后日志會丟失,無需手動配置rsyslog&#xff1…

個人如何做股指期貨?

本文主要介紹個人如何做股指期貨?個人參與股指期貨交易需要遵循一定的流程和規則,同時需充分了解其高風險、高杠桿的特點,并做好風險管理。個人如何做股指期貨?一、了解股指期貨基礎股指期貨是以股票價格指數為標的物的金融期貨合…

設計模式-單例模式 Java

模式概述 單例模式(Singleton Pattern)是設計模式中最基礎但應用最廣泛的創建型模式之一,確保一個類僅有一個實例,并提供一個全局訪問點。這種模式在需要全局唯一對象的場景中至關重要,如配置管理、線程池、數據庫連接…