Vue3路由組件內(nèi)的路由守衛(wèi)onBeforeRouteLeave和onBeforeRouteUpdate使用
簡介
組件內(nèi)的路由守衛(wèi),實(shí)際上就是兩個(gè) API 方法。
他們與普通的守衛(wèi)不同的是 : 他們是寫在組件內(nèi)的,在組件中監(jiān)聽路由的變化,不是全局的,比較靈活。
以下是兩個(gè) API 的功能說明:
onBeforeRouteLeave(): 守衛(wèi)在當(dāng)前路由離開時(shí)觸發(fā),例如 :從 /c 跳轉(zhuǎn)到 /aonBeforeRouteUpdate(): 守衛(wèi)在當(dāng)前路由發(fā)生改變時(shí)觸發(fā),例如 : 從 /c/100 跳轉(zhuǎn)到 /c/200
案例
本案例演示上述兩個(gè) API 的基本使用,沒有太多的邏輯操作。
路由配置
// 導(dǎo)入 定義路由的兩個(gè)方法
import {createRouter,createWebHistory} from 'vue-router'
// 引入組件
import componentA from "./componentA.vue";
import componentC from "./componentC.vue";
// 聲明路由跳轉(zhuǎn)的路徑與組件的對(duì)應(yīng)關(guān)系
const routsList = [
{path:'/a',name:'aroute',component:componentA},
{
path:'/c/:id',
name:'croute',
component:componentC
}
]
// 創(chuàng)建路由的實(shí)例對(duì)象
const routerConfigObj = createRouter({
history:createWebHistory('abc'), // 帶一個(gè)參數(shù),表示是路由的一個(gè)前綴
routes:routsList // 指定路由的配置列表
})
// 導(dǎo)出路由的對(duì)象
export default routerConfigObj;
組件C 中的API 使用代碼(核心)
<template>
<div class="divb">
這是組件C
<br>
<button @click="goToA">跳轉(zhuǎn)到組件a</button>
<br>
<button @click="goToC200">更新到組件c200</button>
</div>
</template>
<script setup lang="ts">
// 引入路由相關(guān)的 API
import {useRouter} from 'vue-router';
// 聲明 路由對(duì)象和當(dāng)前路由對(duì)象
const routeObj = useRouter()
// 點(diǎn)擊按鈕,跳轉(zhuǎn)到組件a
const goToA = ()=>{
routeObj.push({
path:'/a'
})
}
// 更新到組件c 200
const goToC200 = ()=>{
routeObj.push({
path:'/c/200'
})
}
// 導(dǎo)入兩個(gè)組件內(nèi)的路由守衛(wèi)API
import { onBeforeRouteLeave,onBeforeRouteUpdate } from 'vue-router';
// 路由離開時(shí)的操作
onBeforeRouteLeave((to,from)=>{
console.log('組件c : onBeforeRouteLeave - to :',to);
console.log('組件c : onBeforeRouteLeave - from :',from);
alert('當(dāng)前內(nèi)容未保存,是否繼續(xù)離開?')
})
// 路由更新時(shí)的操作
onBeforeRouteUpdate((to,from)=>{
console.log('組件c : onBeforeRouteUpdate - to :',to);
console.log('組件c : onBeforeRouteUpdate - from :',from);
alert('即將跳轉(zhuǎn)到 /c/200,請(qǐng)稍等')
})
</script>
<style scoped>
.divb{
width: 200px;
height: 100px;
background: rgb(23, 177, 182);
}
</style>
運(yùn)行效果1:路由跳轉(zhuǎn)

運(yùn)行效果2:路由更新

總結(jié)
以上就是 組合式API 中的 兩個(gè)組件內(nèi)的 路由守衛(wèi)的操作。
這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue如何動(dòng)態(tài)獲取當(dāng)前時(shí)間
這篇文章主要介紹了vue如何動(dòng)態(tài)獲取當(dāng)前時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
vue實(shí)現(xiàn)列表垂直無縫滾動(dòng)
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)列表垂直無縫滾動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
詳解element-ui級(jí)聯(lián)菜單(城市三級(jí)聯(lián)動(dòng)菜單)和回顯問題
這篇文章主要介紹了詳解element-ui級(jí)聯(lián)菜單(城市三級(jí)聯(lián)動(dòng)菜單)和回顯問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
vue通過element樹形控件實(shí)現(xiàn)樹形表格
這篇文章主要為大家介紹了vue?element樹形控件實(shí)現(xiàn)樹形表格,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11
vue-router二級(jí)導(dǎo)航切換路由及高亮顯示的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于vue-router二級(jí)導(dǎo)航切換路由及高亮顯示的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

