vue-router的鉤子函數(shù)用法實例分析
本文實例講述了vue-router的鉤子函數(shù)用法。分享給大家供大家參考,具體如下:
vue路由鉤子大致可以分為三類:
1.全局鉤子
主要包括beforeEach和aftrEach,
beforeEach函數(shù)有三個參數(shù):
- to:router即將進入的路由對象
- from:當(dāng)前導(dǎo)航即將離開的路由
- next:Function,進行管道中的一個鉤子,如果執(zhí)行完了,則導(dǎo)航的狀態(tài)就是 confirmed (確認的);否則為false,終止導(dǎo)航。
afterEach函數(shù)不用傳next()函數(shù)
這類鉤子主要作用于全局,一般用來判斷權(quán)限,以及以及頁面丟失時候需要執(zhí)行的操作,例如:
//使用鉤子函數(shù)對路由進行權(quán)限跳轉(zhuǎn)
router.beforeEach((to, from, next) => {
const role = localStorage.getItem('ms_username');
if(!role && to.path !== '/login'){
next('/login');
}else if(to.meta.permission){
// 如果是管理員權(quán)限則可進入,這里只是簡單的模擬管理員權(quán)限而已
role === 'admin' ? next() : next('/403');
}else{
// 簡單的判斷IE10及以下不進入富文本編輯器,該組件不兼容
if(navigator.userAgent.indexOf('MSIE') > -1 && to.path === '/editor'){
Vue.prototype.$alert('vue-quill-editor組件不兼容IE10及以下瀏覽器,請使用更高版本的瀏
覽器查看', '瀏覽器不兼容通知', {
confirmButtonText: '確定'
});
}else{
next();
}
}
})
2.單個路由里面的鉤子
主要用于寫某個指定路由跳轉(zhuǎn)時需要執(zhí)行的邏輯
{
path: '/dashboard',
component: resolve => require(['../components/page/Dashboard.vue'], resolve),
meta: { title: '系統(tǒng)首頁' },
beforeEnter: (to, from, next) => {
},
beforeLeave: (to, from, next) => {
}
},
3.組件路由
主要包括 beforeRouteEnter和beforeRouteUpdate ,beforeRouteLeave,這幾個鉤子都是寫在組件里面也可以傳三個參數(shù)(to,from,next),作用與前面類似.
beforeRouteEnter(to, from, next) {
next(vm => {
if (
vm.$route.meta.hasOwnProperty('auth_key') &&
vm.$route.meta.auth_key != ''
) {
if (!vm.hasPermission(vm.$route.meta.auth_key)) {
vm.$router.replace('/admin/noPermission')
}
}
})
},
希望本文所述對大家vue.js程序設(shè)計有所幫助。
相關(guān)文章
VUE的history模式下除了index外其他路由404報錯解決辦法
在本篇文章里小編給大家分享的是關(guān)于VUE的history模式下除了index外其他路由404報錯解決辦法,對此有需要的朋友們可以學(xué)習(xí)下。2019-08-08
vscode使用Eslint+Prettier格式化代碼的詳細操作
這篇文章主要介紹了vscode使用Eslint+Prettier格式化代碼,本文通過圖文示例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
Vue3 computed初始化獲取設(shè)置值實現(xiàn)示例
這篇文章主要為大家介紹了Vue3 computed初始化以及獲取值設(shè)置值實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
JS 函數(shù)的 call、apply 及 bind 超詳細方法
這篇文章主要描述JS 函數(shù)的 call、apply 及 bind 方法的超詳細解說,感興趣的朋友可以參考下文,希望能幫助到您2021-08-08

