vue-router使用next()跳转到指定路径时会无限循环
生活随笔
收集整理的這篇文章主要介紹了
vue-router使用next()跳转到指定路径时会无限循环
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我在路由為 /path 的頁面這樣寫
beforeRouteLeave (to, from, next) {console.log('離開路路由')if(to.fullPath==='/home'){next();}else{next('/home')}這個是組件路由,我想實現的效果是在這個頁面點擊瀏覽器的返回按鈕后要返回 /home頁面而不是上一個頁面,上面的代碼是沒問題的,而我之前的寫法就一直死循環
// 下面的寫法會死循環 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()。
轉載于:https://www.cnblogs.com/yuwenjing0727/p/9916691.html
總結
以上是生活随笔為你收集整理的vue-router使用next()跳转到指定路径时会无限循环的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PostgreSQL的实践一:初识
- 下一篇: 经典动态规划之过河卒【洛谷 P1002】