vue路由守衛(全域性守衛)
阿新 • • 發佈:2021-12-24
router.beforeEach((to,from,next)=>{})
回撥函式中的引數,
to:進入到哪個路由去,
from:從哪個路由離開,
next:函式,決定是否展示你要看到的路由頁面。
- 如下,判斷to.path當前將要進入的路徑是否為登入或註冊,如果是就執行next(),展示當前介面。如果不是,就彈出alert,然後移至登入介面。
- 這樣就可實現,使用者在未登入狀態下,展示的一直是登入介面。
router.beforeEach((to,from,next)=>{ if(to.path == '/login' || to.path == '/register'){ next(); }else{ alert('您還沒有登入,請先登入'); next('/login'); } })
全域性後置鉤子router.afterEach((to,from)=>{})
- 只有兩個引數,
- to:進入到哪個路由去,
- from:從哪個路由離。
- 如下,每次切換路由時,都會彈出alert,點選確定後,展示當前頁面。
router.afterEach((to,from)=>{ alert("after each"); })
關於next這個方法的描述應該如何理解
1.next()
你乘坐汽車要從A景區到B景區,路過關卡時,守門人攔下你,你量出了next(),守門人一看沒問題,趕緊放行,於是你順利到達了B景區。
2.next(false)
如果你量出了next(
false
),守門人立馬關住大門,不讓你走,哪都不讓你去,你說想換個交通方式,走路或者坐飛機,都不行,老實待在A景區吧
3.next('/')
你原本打算從A景區到B景區,但是走到關卡的時候由於某些原因改變了主意,想要去C景區,你對守門員量出了next({path:
'/C'
}),守門員一看,哦,原來你不去B了,要去C啊,去吧去吧,然後你順利到達了C景區
4.next(error)
你在出發之前,給你媽媽說,媽,要是有什麼事我立馬通知你,你記得檢視訊息啊(你註冊了router.onError())走到中途,出現了意外,你發出next(error),然後你媽就收到了訊息,趕緊打電話問你怎麼了(執行router.onError()裡的回撥)