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()里的回調)