鍍金池/ 問答/PHP  HTML/ vue-router使用next()跳轉(zhuǎn)到指定路徑時會無限循環(huán)

vue-router使用next()跳轉(zhuǎn)到指定路徑時會無限循環(huán)

我在路由為 /path 的頁面這樣寫

 beforeRouteLeave (to, from, next) {
        console.log('離開路路由')
       if(to.fullPath==='/home'){
         next();
       }else{
         next('/home')
       }

這個是組件路由,我想實現(xiàn)的效果是在這個頁面點擊瀏覽器的返回按鈕后要返回 /home頁面而不是上一個頁面,上面的代碼是沒問題的,而我之前的寫法就一直死循環(huán)

// 下面的寫法會死循環(huán)
     beforeRouteLeave (to, from, next) {
        console.log('離開路路由')
       next('/home')
}

問題:

 1.我不太明白為什么會死循環(huán),我在home頁面也沒有寫任何鉤子函數(shù)來跳到result頁面啊,我也沒有寫全局的beforeEach鉤子函數(shù)。
 2.上面第一段代碼是可用的,自己瞎摸索出來的,但是不是很明白為什么要加那個判斷?
回答
編輯回答
編輯回答
陌南塵

自問自答下吧,通過別人指點,算是大致理解了,當(dāng)執(zhí)行鉤子函數(shù)時如果遇到next('/home')等時會中斷當(dāng)前導(dǎo)航,比如當(dāng)前導(dǎo)航是去/a,那么遇到next('/home')后就會把to.path改為/home,然后會重新觸發(fā)這個離開的鉤子,注意:此時會重新觸發(fā)執(zhí)行這個鉤子,而不是在這個鉤子函數(shù)繼續(xù)執(zhí)行的,之前是一直沒理解這里,以為是執(zhí)行next('/home')后就會直接跳到home頁面呢,當(dāng)重新觸發(fā)后就會繼續(xù)執(zhí)行next('/home')所以會一直循環(huán)。至于解決辦法就是判斷下,如果已經(jīng)是/home了就next()。

2017年12月12日 21:27