路由鉤子函數(shù)

全局鉤子函數(shù):

    beforeEach:

      beforeEach一共接收三個參數(shù),分別是to、from、next;to:即將進(jìn)入的路由對象;from:正要離開的路由對象;next:路由的控制參數(shù);

      next一共有四種調(diào)用方式:

      next():一切正常調(diào)用這個方法進(jìn)入下一個鉤子;

      next(false):取消路由導(dǎo)航,這時的url顯示的是正要離開的路由地址;

      next('/login'):當(dāng)前路由被終止,進(jìn)入一個新的路由導(dǎo)航(路由地址可以自由指定)

      next(error):路由導(dǎo)航終止并且錯誤會被傳遞到router.onError()注冊過的回調(diào)中;

    我們一般是用全局鉤子來控制權(quán)限,像什么進(jìn)頁面沒有登錄就跳登錄頁,需要用戶達(dá)到什么級別才能訪問當(dāng)前頁面都是屬于頁面權(quán)限控制,都是可以通過beforeEach鉤子函數(shù)來實現(xiàn)


AfterEach:


      AfterEach和beforeEach一樣都是屬于全局守衛(wèi)鉤子,都是在main.js中進(jìn)行調(diào)用;其中AfterEach比beforeEach少一個next參數(shù);


      to:即將要進(jìn)入的路由對象;


      from:正要離開的路由對象;


      afterEach()我們一般用來重置頁面滾動條位置:


      假如我們有一個頁面很長,滾動后其中的某個位置后跳轉(zhuǎn),這時新的頁面的滾動條位置就會在上一個頁面停留的位置;這個時候我們就可以利用afterEach進(jìn)行重置:


組件內(nèi)的鉤子函數(shù):

    beforeRouteEnter(to,from,next):

    在路由進(jìn)入前調(diào)用,因為此時的vue實例還沒有創(chuàng)建,所以beforeEnter是唯一一個不能使用this的鉤子函數(shù);

    to:即將要進(jìn)入的路由對象;

    from:正要離開的路由對象;

    next:路由控制參數(shù)

    beforeRouteUpdate(to,from,next):

    在路由發(fā)生修改的時候進(jìn)行調(diào)用,比如我們上一篇文章講到的動態(tài)路由傳參,這種情況我們的beforeRouteUpdate也是會被調(diào)用的;

     to:即將要進(jìn)入的路由對象;

     from:正要離開的路由對象;

     next:路由控制參數(shù);

    beforeRouteLeave(to,from,next):

    在路由離開該組件時調(diào)用;

    

     to:即將要進(jìn)入的路由對象;

     from:正要離開的路由對象;

     next:路由控制參數(shù)

注意:beforeRouteEnter因為觸發(fā)的時候vue實例還沒有創(chuàng)建,所以這個鉤子函數(shù)中不能使用this,而beforeRouteUpdate和beforeRouteLeave都是可以訪問到實例的,因為當(dāng)這兩個函數(shù)觸發(fā)的時候?qū)嵗家呀?jīng)被創(chuàng)建了;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容