1. 程式人生 > 其它 >vue路由守衛(全域性守衛)

vue路由守衛(全域性守衛)

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()裡的回撥)