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

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

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

這個是組件路由,我想實現的效果是在這個頁面點擊瀏覽器的返回按鈕後要返回 /home頁面而不是上一個頁面,上面的代碼是沒問題的,而我以前的寫法就一直死循環vue-router

// 下面的寫法會死循環
     beforeRouteLeave (to, from, next) {
        console.log('離開路路由')
       next('/home')
}
我不太明白爲何會死循環,我在home頁面也沒有寫任何鉤子函數來跳到result頁面啊,我也沒有寫全局的beforeEach鉤子函數。
上面第一段代碼是可用的,本身瞎摸索出來的,可是不是很明白爲何要加那個判斷?後來通過查閱資料得知vue-router的next()方法無參和有參時是不同的如今,算是大體理解了,當執行鉤子函數時若是遇到next('/home')等時會中斷當前導航,好比當前導航是去/a,那麼遇到next('/home')後就會把to.path改成/home,而後會從新觸發這個離開的鉤子,注意:此時會從新觸發執行這個鉤子,而不是在這個鉤子函數繼續執行的,以前是一直沒理解這裏,覺得是執行next('/home')後就會直接跳到home頁面呢,當從新觸發後就會繼續執行next('/home')因此會一直循環。至於解決辦法就是判斷下,若是已是/home了就next()。
相關文章
相關標籤/搜索