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

您的位置:首頁技術文章
文章詳情頁

詳解vue-router的導航鉤子(導航守衛)

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

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

一、全局守衛

router.beforeEach 路由改變前的鉤子

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

其中:

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

使用:

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

該方法比較常用于:驗證用戶訪問權限。

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

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// 配置路由參數const routes = [ { path: ’/login’, name: ’login’, component: Login }, { path: ’/home’, name: ’home’, component: Home }]const router = new VueRouter({ routes})// 全局掛載路由導航守衛:驗證用戶是否登錄router.beforeEach((to, from, next) => { if (to.name !== ’login’ && !getToken()) next(’/login’) // 如果用戶不是訪問登錄頁且沒有登錄,則強制跳轉到登錄頁 else next()})export default router

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

router.afterEach 路由改變后的鉤子

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

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

使用場景:

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

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

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

二、路由獨享的守衛

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

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

使用:

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

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() } }]

三、組件內的守衛

beforeRouteEnter(to, from, next) 在進入當前組件對應的路由前調用

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

注意:

該函數內不能訪問當前組件實例 this,因為函數在對應路由被 comfirm 前調用,此時將要渲染的組件實例還沒被創建;

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

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

beforeRouteEnter 是支持給 next 傳遞回調的唯一守衛。

使用場景:

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

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

注:

該函數內可以訪問當前組件實例 this

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

beforeRouteLeave(to, from, next) 在離開當前組件對應的路由前調用

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

注:

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

四、完整的導航解析流程

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

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

五、附:使用 watch 監測路由變化

除了使用鉤子函數外,我們也可以使用 watch 來監聽 $route 對象,然后根據路由參數的變化來進行響應。

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

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

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
视频一区视频二区在线观看| 免费精品视频| 91大神在线观看线路一区| 亚洲尤物在线| 每日更新成人在线视频| 亚洲欧美日韩在线观看a三区| 亚洲手机在线| 五月天激情综合网| 久久xxxx精品视频| 亚洲精品护士| 日韩精品久久理论片| 欧美在线不卡| 国产精品扒开腿做爽爽爽软件| 麻豆精品新av中文字幕| 精品国产精品国产偷麻豆| 久久99精品久久久野外观看| 麻豆91小视频| av日韩中文| 久久久夜精品| 亚洲免费激情| 日韩精品成人在线观看| 国产精品密蕾丝视频下载| 国产一区二区久久久久| 少妇精品导航| 久久国产精品毛片| 国产欧美激情| 日韩在线欧美| 日韩中文字幕av电影| 国产亚洲欧美日韩精品一区二区三区 | 久久高清免费观看| 日韩高清在线不卡| 精品99在线| 久久久久国产| 亚洲性视频在线| 国产精品免费99久久久| 九色porny丨国产首页在线| 亚洲视频播放| 国产日韩欧美一区二区三区 | 亚洲精品乱码日韩| 国产精品三级| 色老板在线视频一区二区| 午夜日韩av| 亚洲aa在线| 色乱码一区二区三区网站| 亚洲精品va| 国产伦一区二区三区| 精品捆绑调教一区二区三区| 蜜臀久久99精品久久久久宅男| 国产日韩视频在线| 欧美日韩国产在线观看网站 | 亚洲精品字幕| 国产suv精品一区二区四区视频| 亚洲调教视频在线观看| 日韩av字幕| 亚洲人成在线网站| 蜜桃av一区二区在线观看| 久久不卡日韩美女| 九九综合在线| 国产精品va| 亚洲免费影院| 在线天堂资源www在线污| 亚洲欧美网站在线观看| 日韩欧美一区二区三区在线视频 | 日韩福利视频导航| 久久久国产亚洲精品| 日本视频一区二区| 五月天综合网站| 国语精品一区| 国产亚洲亚洲| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 日韩电影免费在线观看| 日本久久一区| 不卡一区综合视频| 精品亚洲精品| 日韩国产精品久久久久久亚洲| 久久久成人网| 久久99久久人婷婷精品综合| 日韩精品一区第一页| 高清av不卡| 国产精品一区亚洲| 蜜臀久久99精品久久久久久9| 精品国模一区二区三区| 国产劲爆久久| 色婷婷成人网| 尹人成人综合网| 欧洲一区二区三区精品| 老司机精品视频网| 日韩va亚洲va欧美va久久| 在线亚洲精品| 99久久久久国产精品| 精品一区不卡| 日韩av二区在线播放| 怡红院精品视频在线观看极品| 福利在线免费视频| 久久超级碰碰| 国产欧美久久一区二区三区| 亚洲一区av| 中日韩男男gay无套| 久久美女性网| 91偷拍一区二区三区精品| 国产精品综合| 国产亚洲人成a在线v网站| 一区二区亚洲视频| 9色精品在线| 欧美二区视频| 久久久一二三| 天堂av在线| 国产成人1区| 精品欧美视频| 久久久久97| 欧美国产视频| 国产精品v亚洲精品v日韩精品| 久久国产精品免费一区二区三区 | 免费国产自线拍一欧美视频| 图片区亚洲欧美小说区| 激情视频一区二区三区| 久久精品青草| 久久精品青草| 欧美va天堂在线| 日韩午夜一区| 伊人久久成人| 蜜臀久久99精品久久久久宅男 | 日韩av一二三| 国产视频一区二| 国产精品一区二区免费福利视频| 日韩av中文字幕一区二区三区| 日韩激情一二三区| 日韩高清电影免费| 国产精品免费99久久久| 老司机精品视频网| 高潮一区二区| 日韩伦理在线一区| 极品裸体白嫩激情啪啪国产精品| 免费视频一区三区| 男女男精品网站| 日本不卡高清| 久久99免费视频| sm久久捆绑调教精品一区| 高潮一区二区| 精品91久久久久| 日韩免费精品| 久久久免费人体| 亚洲精品.com| 亚洲欧美网站| 日韩和欧美一区二区| 欧美黄色一区二区| 精品中文在线| 国产在线|日韩| 欧美另类综合| 日韩国产欧美三级| 精品亚洲a∨一区二区三区18| 欧美男人天堂| 国产亚洲福利| 国产欧美在线| 中文字幕人成乱码在线观看| 欧美二区视频| 日韩精品视频中文字幕| 欧美xxxx性| 日韩不卡在线| 亚洲青青久久| 精品中国亚洲| 免费毛片在线不卡| 青草国产精品久久久久久| 精品国产欧美日韩一区二区三区| 久久人人精品| 亚洲综合婷婷| 精品美女视频 | 国产美女高潮在线| 最新国产拍偷乱拍精品| 国产欧美日韩免费观看| 日韩精品首页| 日韩精品a在线观看91| 成人午夜亚洲| 亚洲福利国产| 日韩国产在线观看一区| а√天堂8资源在线| 蜜桃视频第一区免费观看| 久久精品国产一区二区| 婷婷综合社区| 欧美激情一区| 亚洲黄色在线| 久久中文字幕一区二区三区| 午夜欧美精品久久久久久久| 国产精品中文| 亚洲免费精品| 精品成人18| 亚洲精品国产精品粉嫩| 久久精品一本| 在线 亚洲欧美在线综合一区| 国产精品亚洲二区| 黄色成人91| 久久精品亚洲| 蜜桃av一区二区三区电影| 狂野欧美性猛交xxxx| 亚洲欧美日韩国产一区| 福利在线一区| 日韩激情一二三区| 狠狠操综合网| 福利一区二区三区视频在线观看| 一区二区三区国产在线|