日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

詳解vue-router的導(dǎo)航鉤子(導(dǎo)航守衛(wèi))

瀏覽:4日期:2022-11-07 08:20:34

在做vue項目的時候,要求用戶在頁面訪問前先登錄,或在離開頁面前發(fā)出提醒。vue官方提供的路由管理器 vue-router 提供的導(dǎo)航鉤子,通過跳轉(zhuǎn)或取消的方式守衛(wèi)導(dǎo)航。以下總結(jié)了路由鉤子函數(shù)的使用方法和一些使用場景。

一、全局守衛(wèi)

router.beforeEach 路由改變前的鉤子

const router = new VueRouter({ ... })router.beforeEach((to, from, next) => { ... ...})

其中:

to:將要訪問的路徑 from:代表從哪個路徑跳轉(zhuǎn)來的 next:是一個函數(shù),表示放行。有如下幾種調(diào)用方式 next():如果一起正常,則調(diào)用該方法進入下一個鉤子; next(false):中斷當(dāng)前導(dǎo)航,即路由地址不發(fā)生變化; next(’/xxx’) 或 next({path: ’/xxx’}):強制跳轉(zhuǎn)到指定路徑; next(error):如果傳入的是一個Error實例,則導(dǎo)航會被中斷且該錯誤會被傳遞給 router.onError() 注冊過的回調(diào)。

使用:

使用該函數(shù),一定要調(diào)用 next(),否則鉤子函數(shù)不能 resolve;

該方法比較常用于:驗證用戶訪問權(quán)限。

比如:一個系統(tǒng)需要先驗證用戶是否登錄,如果登錄了就可以訪問,否則直接跳轉(zhuǎn)到登錄頁面。具體實現(xiàn)如下:

import Vue from ’vue’import VueRouter from ’vue-router’import { getToken } from ’@Utils/session.utils’ // 登錄用戶的tokenimport Login from ’../pages/Login.vue’ //引入登錄頁const Home = () => import(’../pages/Home.vue’) //引入首頁Vue.use(VueRouter) // 全局注入router// 配置路由參數(shù)const routes = [ { path: ’/login’, name: ’login’, component: Login }, { path: ’/home’, name: ’home’, component: Home }]const router = new VueRouter({ routes})// 全局掛載路由導(dǎo)航守衛(wèi):驗證用戶是否登錄router.beforeEach((to, from, next) => { if (to.name !== ’login’ && !getToken()) next(’/login’) // 如果用戶不是訪問登錄頁且沒有登錄,則強制跳轉(zhuǎn)到登錄頁 else next()})export default router

router.beforeResolve 在導(dǎo)航被確認之前,同時在所有組件內(nèi)守衛(wèi)和異步路由組件被解析之后,該鉤子函數(shù)就被調(diào)用。該方法我在項目中暫時還未使用到,具體使用場景歡迎大家補充 :)

router.afterEach 路由改變后的鉤子

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

該方法同全局前置守衛(wèi) router.beforeEach 不同的是少了 next() 函數(shù),也不會改變導(dǎo)航本身。

使用場景:

路由切換,將頁面的滾動位置返回到頂部。

例如:一個頁面比較長,當(dāng)滾動到某個位置后切換路由,這時跳轉(zhuǎn)的頁面滾動條位置默認是前一個頁面離開時停留的位置,可以通過該鉤子函數(shù)將滾動條位置重置。

// 切換路由,頁面返回到頂部router.afterEach((to, from) => { window.scrollTo(0, 0)})

二、路由獨享的守衛(wèi)

beforeEnter 對某個路由的單獨守衛(wèi),在路由配置上直接定義

const routes = [ { path: ’/login’, name: ’login’, component: Login }, { path: ’/home’, name: ’home’, component: Home, beforeEnter: (to, from, next) => { ... ... } }]const router = new VueRouter({ routes})

使用:

該方法的參數(shù)使用同全局前置守衛(wèi) router.beforeEach 是一樣的;例如:根據(jù)登錄用戶的不同角色,展示不同的模塊;或者給指定路由組件單獨添加動畫。

import Vue from ’vue’import VueRouter from ’vue-router’import { getUserRole } from ’@Utils/session.utils’ // 登錄用戶的角色const UserCenter = () => import(’../pages/UserCenter.vue’)const routes = [ ... ... { path: ’/usercenter’, name: ’usercenter’, component: UserCenter, beforeEnter: (to, from, next) => { if(getUserRole() === ’admin’) next(’/admincenter’) else next() } }]

三、組件內(nèi)的守衛(wèi)

beforeRouteEnter(to, from, next) 在進入當(dāng)前組件對應(yīng)的路由前調(diào)用

export default { data() { ... }, beforeRouteEnter(to, from, next) { ... ... }}

注意:

該函數(shù)內(nèi)不能訪問當(dāng)前組件實例 this,因為函數(shù)在對應(yīng)路由被 comfirm 前調(diào)用,此時將要渲染的組件實例還沒被創(chuàng)建;

可以通過給 next 傳遞一個回調(diào)來訪問組件實例,即把組件實例 vm 作為回調(diào)方法的參數(shù);該回調(diào)的執(zhí)行在 mounted 后面;

beforeRouteEnter (to, from, next) { next(vm => { // 通過 vm 來訪問組件實例 })}

beforeRouteEnter 是支持給 next 傳遞回調(diào)的唯一守衛(wèi)。

使用場景:

例如:從一個列表頁進入到詳情頁,然后再返回到列表頁,要求保留離開列表頁之前訪問的數(shù)據(jù)及滾動位置,從其他頁面重新進入列表頁,獲取最新的數(shù)據(jù)。具體實現(xiàn)請點這里beforeRouteUpdate(to, from, next) 在當(dāng)前路由改變,但是該組件被復(fù)用時調(diào)用

beforeRouteUpdate (to, from, next) { ... ...}

注:

該函數(shù)內(nèi)可以訪問當(dāng)前組件實例 this

例如:在一個帶有動態(tài)參數(shù)的路徑 /detail/:id,在 /detail/aaa 和 /detail/bbb 之間跳轉(zhuǎn)的時候,因為兩個路由渲染的是同個 Detail 組件,因此原來的組件實例會被復(fù)用(比起銷毀再創(chuàng)建,復(fù)用則會更加高效),在這種情況下這個鉤子會被調(diào)用,而組件的生命周期鉤子不會再被調(diào)用。

beforeRouteLeave(to, from, next) 在離開當(dāng)前組件對應(yīng)的路由前調(diào)用

beforeRouteLeave (to, from, next) { ... ...}

注:

該函數(shù)內(nèi)可以訪問當(dāng)前組件實例 this; 比如:用戶在當(dāng)前頁面有還未保存的內(nèi)容時突然離開,阻止頁面跳轉(zhuǎn)并給出提示,或者在用戶離開時清除或存儲一些信息等。

四、完整的導(dǎo)航解析流程

導(dǎo)航被觸發(fā); 在失活的組件里調(diào)用 beforeRouteLeave 守衛(wèi); 調(diào)用全局的 beforeEach 守衛(wèi); 在重用的組件里調(diào)用 beforeRouteUpdate 守衛(wèi) (2.2+); 在路由配置里調(diào)用 beforeEnter; 解析異步路由組件; 在被激活的組件里調(diào)用 beforeRouteEnter; 調(diào)用全局的 beforeResolve 守衛(wèi) (2.5+); 導(dǎo)航被確認; 調(diào)用全局的 afterEach 鉤子; 觸發(fā) DOM 更新; 調(diào)用 beforeRouteEnter 守衛(wèi)中傳給 next 的回調(diào)函數(shù),創(chuàng)建好的組件實例會作為回調(diào)函數(shù)的參數(shù)傳入。

其實常用的也就那么幾個,理解了其用法,路由導(dǎo)航的解析流程也就明了了。

五、附:使用 watch 監(jiān)測路由變化

除了使用鉤子函數(shù)外,我們也可以使用 watch 來監(jiān)聽 $route 對象,然后根據(jù)路由參數(shù)的變化來進行響應(yīng)。

<template> <div id=``'app'``> <keep-alive> <router-view/> </keep-alive> </div></template><script> export default { name: ’App’, watch: { ’$route’ (to, from) { // 對路由變化作出響應(yīng)... } } }</script>

到此這篇關(guān)于詳解vue-router的導(dǎo)航鉤子(導(dǎo)航守衛(wèi))的文章就介紹到這了,更多相關(guān)vue-router 導(dǎo)航鉤子內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久中文在线| 日韩精品一级二级| 亚洲18在线| 先锋亚洲精品| 伊人久久亚洲影院| 99热精品在线观看| 欧美日中文字幕| 成人久久一区| 岛国av在线网站| 狠狠躁少妇一区二区三区| 日韩a一区二区| 福利视频一区| 国产成人精品一区二区三区免费| 久久av电影| 精品久久精品| 欧美片第1页| 一级欧洲+日本+国产| 日韩午夜高潮| 亚洲丝袜美腿一区| 亚洲精品影视| 国产欧美日韩影院| 国产欧美日韩精品一区二区免费 | 久久精品午夜| 国产一区二区三区四区二区| 日本精品黄色| 久久精品国产大片免费观看| 在线国产一区二区| 亚洲另类av| 国产欧美视频在线| 国产一区二区色噜噜| а√天堂8资源中文在线| 久久九九电影| 亚洲一区网站| 日本亚州欧洲精品不卡| 清纯唯美亚洲综合一区| 欧美aa在线视频| 免费观看亚洲| 99国产一区| 青青青国产精品| 国产精品久久观看| 九一精品国产| 天堂久久av| 精品免费视频| 99tv成人| 亚洲精品三级| 精品视频高潮| 亚洲调教视频在线观看| 丝袜诱惑制服诱惑色一区在线观看| 亚洲网址在线观看| 国产精品分类| 欧美日韩精品在线一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 91成人在线网站| 精品五月天堂| 2023国产精品久久久精品双| 日韩精品欧美成人高清一区二区| 精品一区视频| 日韩午夜av| 久久不见久久见中文字幕免费| 日韩精品91| 亚洲精品激情| 日韩亚洲一区在线| 日韩精品三级| 97精品国产一区二区三区| 欧美午夜不卡| 国产精品亚洲欧美日韩一区在线| 免费观看久久av| 国产日韩高清一区二区三区在线| 欧美综合另类| 国产精品手机在线播放| 在线视频观看日韩| 久久国产三级精品| 91久久久精品国产| 国产精品久久久久久久免费软件| 91精品国产成人观看| 青青在线精品| 黑丝一区二区三区| 精品国产网站| 亚洲精品人人| 久久中文字幕二区| 欧美精品aa| 石原莉奈在线亚洲二区| 国产高清不卡| 国产精品任我爽爆在线播放 | 日本成人一区二区| 激情丁香综合| 国产精品v日韩精品v欧美精品网站| 亚洲午夜黄色| 精品久久电影| 欧美一区自拍| 91成人超碰| 国产成人精品一区二区三区免费| 视频一区日韩精品| 在线综合视频| 久久精品二区三区| 福利精品一区| 国产精选久久| 日韩一区二区三区精品视频第3页 日韩一区二区三区免费视频 | 亚洲精品在线国产| 婷婷精品视频| 欧美精选一区二区三区| 激情久久一区二区| 亚洲三级视频| 国产亚洲一区二区手机在线观看| 久久99久久久精品欧美| 日本国产欧美| 久久午夜精品一区二区| 成人久久久久| 国产一区调教| 久久不卡国产精品一区二区| 日韩精品免费视频人成| 9色精品在线| 欧美日韩国产一区二区三区不卡| 亚洲综合电影| 国产一区二区三区91| 九九久久国产| 精品国产亚洲日本| 国产精品igao视频网网址不卡日韩| 日本不卡在线视频| 日本亚洲最大的色成网站www | 免费日韩视频| 丝袜美腿亚洲一区二区图片| 亚洲少妇诱惑| 日韩中文字幕不卡| 中文字幕亚洲影视| 亚洲区第一页| 日本免费一区二区视频| 日韩欧美四区| 久久毛片亚洲| 精品视频国内| 精品高清久久| 免费在线成人| 国产66精品| 欧美a一区二区| 国产精品一区二区中文字幕| 日韩午夜电影| 三级欧美韩日大片在线看| 性欧美xxxx免费岛国不卡电影| 都市激情国产精品| 久久一区精品| 九九久久国产| 日韩免费福利视频| 国产精品毛片一区二区在线看| 国产精品白丝久久av网站| 日韩高清不卡一区二区| 亚洲作爱视频| 四虎影视精品| 激情欧美丁香| 亚洲第一区色| 亚洲国产综合在线看不卡| 日韩av一级片| 麻豆高清免费国产一区| 国产调教精品| 麻豆91在线播放| 精品视频一二| 欧美国产一级| 日韩三区免费| 精品1区2区3区4区| 蜜臀国产一区二区三区在线播放| 快she精品国产999| 日韩视频在线一区二区三区 | 国产精品女主播一区二区三区| 在线一区二区三区视频| 只有精品亚洲| 日韩成人精品一区二区三区 | 国产精品毛片久久久| 国产三级一区| 精品国产一区二区三区噜噜噜| 给我免费播放日韩视频| 伊人久久高清| 成人一二三区| 欧美日韩视频| 亚洲精品乱码日韩| 国产区精品区| 四虎成人av| 中文字幕人成乱码在线观看| 五月天久久久| 一区二区三区四区精品视频| 青草综合视频| 国产精品美女在线观看直播| 国产精品香蕉| 西西人体一区二区| 99视频精品| 欧美aaaaaa午夜精品| 久久三级中文| 日韩免费在线| 1024精品久久久久久久久| 综合国产精品| 精品欧美视频| 国产美女一区| 久久不卡日韩美女| 国产99精品| 一区二区三区四区日韩| 国产免费播放一区二区| 欧美国产一级| 午夜久久tv| 欧美午夜三级| 伊人久久高清| 一区二区三区午夜视频| 国产精品一区二区三区av麻|