国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Vue3 中 導航守衛(wèi) 的使用

這篇具有很好參考價值的文章主要介紹了Vue3 中 導航守衛(wèi) 的使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言:

在編寫vue里的登錄注冊時,我們始終繞不開對導航守衛(wèi)的使用,vue-router4.0版里有一些重要更新,在這里分享給大家。


一、什么是導航守衛(wèi)?

正如其名,vue-router 提供的導航守衛(wèi)主要用來通過跳轉或取消的方式守衛(wèi)導航。這里有很多方式植入路由導航中:全局的,單個路由獨享的,或者組件級的。

查看以下情形:

  1. 點擊主頁鏈接時,默認情況下可直接進入指定界面,如圖,但是問題是該跳轉的界面是需要用戶登錄后方可訪問的
    vue3 beforerouteleave,vue3,vue.js,javascript,前端

  2. 可設置導航守衛(wèi)來檢測用戶是否登錄,如果已登錄,則進入后臺頁,如果未登錄,則強制進入登錄頁,如圖
    vue3 beforerouteleave,vue3,vue.js,javascript,前端


二、導航守衛(wèi)有哪幾種?

1、全局守衛(wèi)(3個)

全局前置守衛(wèi)

每次發(fā)生路由的導航跳轉時,都會觸發(fā)全局前置守衛(wèi),因此,在全局前置守衛(wèi)中,程序員可以對每個路由進行訪問權限的控制

1、 使用方式
你可以在 router/index.js 頁面中使用 router.beforeEach((to, from, next) => {}) 注冊一個全局前置守衛(wèi)。
2、 代碼:
// router/index.js 頁面

router.beforeEach((to, from, next) => {
    console.log(to, from);
    next()
});

全局解析守衛(wèi)

1、 使用方式
你可以用 router.beforeResolve 注冊一個全局守衛(wèi)。這和 router.beforeEach 類似,因為它在 每次導航時都會觸發(fā),但是確保在導航被確認之前,同時在所有組件內守衛(wèi)和異步路由組件被解析之后,解析守衛(wèi)就被正確調用。
2、 代碼:
// router/index.js 頁面

router.beforeResolve((to, from, next) => {
    console.log(to,from);
    next()
})

全局后置鉤子

1、 使用方式
你也可以注冊全局后置鉤子,然而和守衛(wèi)不同的是,這些鉤子不會接受 next 函數也不會改變導航本身:
2、 代碼:
// router/index.js 頁面

router.afterEach((to, from) => {
    console.log(to,from);
})

它們對于分析、更改頁面標題、聲明頁面等輔助功能以及許多其他事情都很有用。


2、路由獨享守衛(wèi)(1個)

1、 使用方式
你可以直接在路由配置上定義 beforeEnter 守衛(wèi):
2、 代碼:
// router/index.js 頁面(路由規(guī)則中)

const routes = [
	{
	    path: '/home',
	    name: 'Home',
	    component: HomeView,
	    beforeEnter: (to, from,next) => {
	        console.log(to, from);
	        next()
	    },
	}, 
]

3、組件內守衛(wèi)(3個)

組件內守衛(wèi)有個三個:路由進入之前beforeRouteEnter,路由離開時beforeRouteLeave,頁面更新時beforeRouteUpdate


beforeRouteEnter(to, from, next)

1、 使用方式
在組件模板中使用,跟methods: {}等同級別書寫,組件路由守衛(wèi)是寫在每個單獨的vue文件里面的路由守衛(wèi)
2、 代碼:
// vue 組件內使用

beforeRouteEnter(to, from) {
  // 在渲染該組件的對應路由被驗證前調用
  // 不能獲取組件實例 `this` !
  // 因為當守衛(wèi)執(zhí)行時,組件實例還沒被創(chuàng)建!
},

注意:

在 vue3 中的 setup 函數中是不可以使用 beforeRouterEnter 這個路由守衛(wèi)的

beforeRouteUpdate(to, from, next)

1、 使用方式
在組件模板中使用,跟 methods: {} 等同級別書寫,組件路由守衛(wèi)是寫在每個單獨的 vue 文件里面的路由守衛(wèi)
2、 代碼:
// vue 組件內使用

onBeforeRouteUpdate((to, from) => {
  //當前組件路由改變后,進行觸發(fā)
  console.log(to);
});

beforeRouteLeave(to, from, next)

1、 使用方式
在組件模板中使用, 跟methods: {} 等同級別書寫,組件路由守衛(wèi)是寫在每個單獨的 vue 文件里面的路由守衛(wèi)
2、 代碼:
// vue 組件內使用

onBeforeRouteLeave((to, from) => {
  //離開當前的組件,觸發(fā)
  alert("我離開啦");
});

三、導航守衛(wèi)的三個參數

  1. to:將要訪問的路由信息對象
  2. from:將要離開的路由信息對象
  3. next:函數
    1. 調用next()表示放行,允許這次路由導航
    2. 調用next(false)表示不放行,不允許此次路由導航
    3. 調用next({routerPath})表示導航到此地址,一般情況用戶未登錄時,會導航到登陸界面

提示:

該函數在導航守衛(wèi)中可出現多次,但是只能被調用一次!!!

vue3 beforerouteleave,vue3,vue.js,javascript,前端


四、如何在 vue3 中使用 beforeRouteEnter

如果你正在使用組合 API 和 setup 函數來編寫組件,你可以通過 onBeforeRouteUpdate 和 onBeforeRouteLeave 分別添加 update 和 leave 守衛(wèi)。 請參考組合 API 部分以獲得更多細節(jié)。


具體請看vue-router的官方文檔
導航守衛(wèi) | Vue Router

方法一、我們可以在設置路由的時候,使用beforeEnter方法攔截,即在router.js中:

{
	path: '/',
	name: 'home
	component: () => import('@/xxx.vue'),
	beforeEnter: (to, from) => {
		// 可以在定義路由的時候監(jiān)聽from和to
	}
}

方法二、我們還可以使用vue2的寫法,使用選項式api,就可以使用beforeRouterEnter這個鉤子了

<script>
export default {
	beforeRouteEnter(to, from) {
		console.log('before router enter', to, from)
	},
	mounted() {
		console.log('mounted')
	},
}

五、模擬登錄注冊案例

// 模擬是否登錄(true為登錄,false為未登錄)
let token = true
router.beforeEach((to, from, next) => {
    // 判斷有沒有登錄
    if (!token) {
    	// 如果沒有登錄,并且是跳轉至登錄頁
        if (to.name == "Login") {
        	// 直接跳轉
            next();
        } else {
        	// 否則直接強制跳轉至登錄頁
            router.push('/login')
        }
    } else {
    	// 如果已經登錄,并且不是跳轉至登錄頁
        if (to.name !== "Login") {
        	// 直接跳轉
            next();
        } else {
        	// 否則直接強制跳轉至上一個頁面
            router.push(from.path)
        }
    }
});

總結:

歡迎大家加入我的社區(qū),在社區(qū)中會不定時發(fā)布一些精選內容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003


以上就是 Vue3 中 導航守衛(wèi) 的使用,不懂得也可以在評論區(qū)里問我或私聊我詢問,以后會持續(xù)發(fā)布一些新的功能,敬請關注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog文章來源地址http://www.zghlxwxcb.cn/news/detail-782546.html

到了這里,關于Vue3 中 導航守衛(wèi) 的使用的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Vue3----吸頂導航

    Vue3----吸頂導航

    ?安裝vueuse:? npm i @vueuse/core 1. 準備吸頂導航組 2.獲取滾動距離 3.以滾動距離做判斷條件控制組件盒子展示隱藏 ?

    2024年02月13日
    瀏覽(14)
  • vue3-吸頂導航

    vue3-吸頂導航

    吸頂導航 當滑動滾輪大于78px時,觸發(fā)show樣式 css設計

    2024年01月19日
    瀏覽(16)
  • vue3時間插件——Moment.js使用

    vue3時間插件——Moment.js使用

    在日期時間這一塊在js中是有體現的,但是用起來不是特別方便,尤其是在vue框架中,我們也不可能去那樣使用,顯得很笨拙麻煩,所以給大家這次帶來一個好用的時間插件,就是Moment時間插件,很小巧,使用也方便,也兼容vue3,下面來詳細介紹一下 ? 首先是 Moment.js 的官方

    2024年02月05日
    瀏覽(33)
  • vue3項目中使用three.js

    vue3項目中使用three.js

    在vue3項目中,通過three.js使用了一段短小但完整的代碼實現了實際的三維效果圖。 Three.js是一個輕量級,跨平臺的Javascript庫,可以在瀏覽器上結合HTML5的canvas,SVG或者WebGL,創(chuàng)建和展示3D模型和動畫。 Three.js允許我們在不依賴任何瀏覽器插件的情況下,創(chuàng)建一個GPU加速的3D動畫場

    2024年01月23日
    瀏覽(33)
  • Vue3中簡單使用Mock.js

    Vue3中簡單使用Mock.js

    mock.js簡介 ? 官方鏈接:Mock.js (mockjs.com) ????????前端開發(fā)人員用來模擬虛擬數據,攔截ajax請求,方便模擬后端接口 安裝 使用 ????????本文主要介紹在Vue項目中使用mock.js,包括axios發(fā)送請求與請求簡單封裝 創(chuàng)建mock文件夾,新建index.js文件 ? ? ? ? 模擬數據可自己手動

    2024年02月02日
    瀏覽(24)
  • vue3+js-md5密碼加密使用

    在實際開發(fā)中,后臺管理系統往往登錄密碼加密后才能傳給后端,這里可以有效的保護用戶信息與安全,下面使用js-md5對用戶密碼進行加密

    2024年01月18日
    瀏覽(17)
  • vue3時間插件——Moment.js使用
Moment.js的配置

    vue3時間插件——Moment.js使用 Moment.js的配置

    在日期時間這一塊在js中是有體現的,但是用起來不是特別方便,尤其是在vue框架中,我們也不可能去那樣使用,顯得很笨拙麻煩,所以給大家這次帶來一個好用的時間插件,就是Moment時間插件,很小巧,使用也方便,也兼容vue3,下面來詳細介紹一下 ? 首先是 Moment.js 的官方

    2024年02月11日
    瀏覽(27)
  • vue3 使用 web3.js;錢包轉賬;喚醒錢包.......

    web3.js基本使用 本篇文章不適合沒有經驗的小白,需要對web3有一定的了解,所以有些參數需要自己懂! 準備 安裝web3.js依賴包 npm install web3 文檔教程地址:https://web3.tryblockchain.org/ 這是我自己封裝的類 web3.js 直接復制過去就可以用

    2024年02月03日
    瀏覽(24)
  • Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(下)

    Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(下)

    在進入文章的正文之前,我們先一起了解一下關于 CSDN 今年的 1024 程序員節(jié)。與此同時這也是我在 CSDN 參與的第二個 1024 程序員節(jié)日,轉眼間也快寫博客兩年時間,去年很遺憾沒有去到深圳(疫情原因)線下參加這個有趣而充實的峰會。今年沒有特殊情況的話一定會如約而至

    2024年02月06日
    瀏覽(25)
  • Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(上)

    Vue3 開發(fā)實戰(zhàn)分享——打印插件 Print.js 的使用(Vue3 + Nodejs + Print.js 實戰(zhàn))以及 el-table 與 el-pagination 的深入使用(上)

    今天久違的更新一下關于 Vue 的文章了,本篇文章是基于 Vue3 + Node.js + ElementPlus 的實戰(zhàn)項目分享,實戰(zhàn)內容包括有打印插件 Print.js 的使用,以及關于 ElementPlus 中的 el-table 與 el-pagination 的深入使用。本次項目以文章(axios 實戰(zhàn)進階練習——基于 Vue3 + Node.js + ElementPlus 實現的聯

    2024年02月06日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包