vue3 vue-router 導航守衛 (五)

在Vue 3中,導航守衛仍然是一個重要的概念,用于在路由切換時執行一些特定的邏輯。Vue Router提供了多個導航守衛,包括全局守衛、路由獨享守衛和組件內守衛。可以在路由切換時執行一些特定的邏輯,例如身份驗證、權限控制、數據加載等幫助你更好地控制整個應用程序的導航流程。

文章目錄

  • 一、全局前置守衛
  • 二、路由獨享守衛
  • 三、全局后置守衛
  • 四、組件內守衛
  • 五、案例

一、全局前置守衛

全局前置守衛會在路由切換之前被調用,并且在所有路由切換中都會被觸發

router.beforeEach((to, from, next) => {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換
})

二、路由獨享守衛

你也可以為特定的路由定義守衛

const routes = [{path: '/example',component: ExampleComponent,beforeEnter: (to, from, next) => {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換}}
]

三、全局后置守衛

全局后置守衛會在路由切換之后被調用,并且在所有路由切換中都會被觸發

router.afterEach((to, from) => {// 在這里執行你的邏輯
})

四、組件內守衛

組件內守衛是針對特定組件的守衛,組件內守衛有3個

注意:beforeRouteEnter在setup語法糖中是無法使用的,需要再起一個script標簽 使用defineComponent方式來使用

<script lang="ts">
import { defineComponent } from 'vue';
export default defineComponent({beforeRouteEnter(to, from, next) {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換},beforeRouteUpdate(to, from, next) {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換},beforeRouteLeave(to, from, next) {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換}
});
</script><script setup lang="ts">
import { ref, reactive, computed, onMounted } from 'vue';
</script>

五、案例

下面是一個簡單的案例,當我們線上考試時,若通過更改瀏覽器網址到其他地方而沒有到交卷頁則提醒你正在考試,是否放棄考試。這個時候我們就可以使用組件內守衛來進行邏輯處理。當然,下面的案例只是提供一個簡單的組件內守衛適用場景,代碼比較粗糙,具體還需要根據項目情況來處理。

<script setup lang="ts">
import { useRoute,useRouter } from "vue-router";
const router = useRouter();const back = async()=>{try {await this.$confirm("你正在考試,是否放棄考試", "確認信息", {distinguishCancelAndClose: true,confirmButtonText: "確定",});try {// await this.toTestResult(true)} catch (e) {router.push({ name: "Home" });}} catch (e) {return false;}}
</script><script lang="ts">
import { defineComponent } from "vue";
export default defineComponent({beforeRouteEnter(to, from, next) {//沒有跳到交卷頁面提醒if (to.path != "result") {back();} else {next();}},beforeRouteUpdate(to, from, next) {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換},beforeRouteLeave(to, from, next) {// 在這里執行你的邏輯// 通過調用next()來繼續路由切換,或者調用next(false)取消路由切換},});
</script>

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

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

相關文章

C++STL詳解+代碼分析+典例講解

vector 的介紹&#xff1a; 1、vector是表示可變大小數組的序列容器。 2、vector就像數組一樣&#xff0c;也采用的連續空間來存儲元素&#xff0c;這也意味著可以采用下標對vector的元素進行訪問。 3、vector與普通數組不同的是&#xff0c;vector的大小是可以動態改變的。 4、…

基于物聯網的智能倉管理系統方案

基于物聯網的智能倉管理系統方案 一、項目背景 隨著企業業務的快速發展&#xff0c;傳統的人工倉庫管理方式已經無法滿足現代企業的需求。倉庫運營效率低下、貨物出入庫錯誤、庫存不準確等問題不斷涌現。因此&#xff0c;我們提出一個基于物聯網技術的智能倉管理系統方案&…

Redis 五大經典業務問題

一 緩存穿透 緩存穿透是指當請求的數據既不在緩存中也不存在于數據庫中時&#xff0c;請求會直接穿透緩存層&#xff0c;到達數據庫層。這通常是由于惡意攻擊或者程序錯誤造成的&#xff0c;比如攻擊者故意請求不存在的大量數據&#xff0c;導致緩存不命中&#xff0c;所有的請…

智能優化算法應用:基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼

智能優化算法應用&#xff1a;基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼 文章目錄 智能優化算法應用&#xff1a;基于被囊群算法3D無線傳感器網絡(WSN)覆蓋優化 - 附代碼1.無線傳感網絡節點模型2.覆蓋數學模型及分析3.被囊群算法4.實驗參數設定5.算法結果6.參考文…

Moco框架的搭建使用

一、前言   之前一直聽mock&#xff0c;也大致了解mock的作用&#xff0c;但沒有具體去了解過如何用工具或框架實現mock&#xff0c;以及也沒有考慮過落實mock&#xff0c;因為在實際的工作中&#xff0c;很少會考慮用mock。最近在學java&#xff0c;剛好了解到moco框架是用于…

城市基礎設施智慧路燈改造的特點

智慧城市建設穩步有序推進。作為智慧城市的基礎設施&#xff0c;智能照明是智慧城市的重要組成部分&#xff0c;而叁仟智慧路燈是智慧城市理念下的新產品。隨著物聯網和智能控制技術的飛速發展&#xff0c;路燈被賦予了新的任務和角色。除了使道路照明智能化和節能化外&#xf…

安全掃描五項簡介

目錄 安掃五項 1.代碼檢測 2.主機基線 nginx合規檢查 麒麟基線 3.WEB掃描 4.滲透測試 用戶枚舉漏洞 漏洞描述 修復建議 點擊劫持漏洞 漏洞描述 修復建議 XSS漏洞 漏洞描述 修復建議 3.主機漏洞 超高危漏洞 高危漏洞 中危漏洞 低危漏洞 信息漏洞 參考信息…

用電商API接口獲取拼多多的商品詳情數據

pinduoduo.item_get_app_pro-根據ID取商品詳情原數據 公共參數 API請求地址 名稱類型必須描述keyString是調用key&#xff08;必須以GET方式拼接在URL中&#xff09;secretString是調用密鑰api_nameString是API接口名稱&#xff08;包括在請求地址中&#xff09;[item_searc…

一步一步寫線程之一簡單的開始

一、多線程 多線程不管是在前面的文章分析中還是在網上還是大書籍上&#xff0c;學習C/C多線程編程是無法繞過的&#xff0c;即使使用別人封裝好的框架&#xff0c;包括使用STL的一些庫&#xff0c;如果僅僅是簡單的應用&#xff0c;可能也就過去了。不過&#xff0c;稍微復雜…

VBA_MF系列技術資料1-237

MF系列VBA技術資料 為了讓廣大學員在VBA編程中有切實可行的思路及有效的提高自己的編程技巧&#xff0c;我參考大量的資料&#xff0c;并結合自己的經驗總結了這份MF系列VBA技術綜合資料&#xff0c;而且開放源碼&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04屬于定…

[Linux] 用LNMP網站框架搭建論壇

一、nginx在其中工作原理 原理&#xff1a; php-fpm.conf是控制php-fpm守護進程 它是php.ini是一個php解析器 工作過程&#xff1a; 1.當客戶端通過域名請求訪問時&#xff0c;Nginx會找到對應的虛擬主機 2. Nginx將確定請求。 對于靜態請求&#xff0c;Nginx會自行處理…

結構體和位段

結構體&#xff1a; C語言中&#xff0c;我們之前使用的都是C語言中內置的類型&#xff0c;比如整形&#xff08;int&#xff09;、字符型&#xff08;char&#xff09;、單精度浮點型&#xff08;float&#xff09;等。但是我們知道&#xff0c;我們現實世界中&#xff0c;還…

聊聊spring.mvc.servlet.load-on-startup

序 本文主要研究一下spring.mvc.servlet.load-on-startup spring.mvc.servlet.load-on-startup org/springframework/boot/autoconfigure/web/servlet/WebMvcProperties.java ConfigurationProperties(prefix "spring.mvc") public class WebMvcProperties {//.…

json精講

本文介紹json的規范及javascript和java對數據的交換讀取 1. json介紹1.1 json簡介1.2為什么使用 JSON&#xff1f; 2. json規范2.1基礎規范2.2 key值為-字符串、數字、布爾值2.3 key值為對象Object2.4 key值為數組2.5 json本身就是一個數組 3.javascript操作json3.1 javascript…

WPF(Windows Presentation Foundation) 的 Menu控件

WPF&#xff08;Windows Presentation Foundation&#xff09;的 Menu 是一種用于創建菜單的控件。菜單通常位于應用程序窗口的頂部&#xff0c;并提供了一組命令或選項&#xff0c;用于導航到不同的功能區域、執行特定的操作或訪問特定的功能。 Menu 控件是 WPF 中的一個容器…

2、關于使用ajax驗證繞過(實例2)

ajax原理我上一篇有寫過&#xff0c;參考&#xff1a;1、關于前端js-ajax繞過-CSDN博客 一、實例環境&#xff1a; 為手機上的某一割韭菜app 二、目的&#xff1a; 實現繞過手機驗證碼&#xff0c;找回密碼 三、工具&#xff1a; bp代理 四、驗證步驟如下&#xff1a; …

ECU安全學習網站和書籍介紹

ECU安全是指關注和保護汽車電子控制單元&#xff08;ECU&#xff09;的安全性和防護措施。ECU是現代汽車中的關鍵組件&#xff0c;它負責監控和控制車輛各種系統的運行&#xff0c;如發動機、制動、轉向等。ECU安全的重要性在于防止惡意攻擊者操控或干擾車輛的操作。 ECU安全涉…

hive自定義函數及案例

一.自定義函數 1.Hive自帶了一些函數&#xff0c;比如&#xff1a;max/min等&#xff0c;但是數量有限&#xff0c;自己可以通過自定義UDF來方便的擴展。 2.當Hive提供的內置函數無法滿足你的業務處理需要時&#xff0c;此時就可以考慮使用用戶自定義函數。 3.根據用戶自定義…

GitHub為Rust語言添加了供應鏈安全工具

GitHub的供應鏈安全特性包括咨詢數據庫、Dependabot警報和依賴關系圖現在可以用于Rust Cargo文件。 為了幫助Rust開發人員發現和防止安全漏洞&#xff0c;GitHub已經為快速增長的Rust語言提供了供應鏈安全特性套件。 這些特性包括GitHub Advisory Database&#xff0c;它已經有…

構建外賣系統:使用Django框架

在當今數字化的時代&#xff0c;外賣系統的搭建不再是什么復雜的任務。通過使用Django框架&#xff0c;我們可以迅速建立一個強大、靈活且易于擴展的外賣系統。本文將演示如何使用Django構建一個簡單的外賣系統&#xff0c;并包含一些基本的技術代碼。 步驟一&#xff1a;安裝…