VUE 路由守衛 next() 詳解


router.beforeEach((to, from, next) => { // ... })

 

 

在路由守衛中,只有next()是放行,其他的諸如:next('/logon') 、 next(to) 或者 next({ ...to, replace: true })都不是放行,而是:中斷當前導航,執行新的導航

next() 是放行,但是如果next()里有參數的話,next()就像被重載一樣,就有了不同的功能。

 

 

使用動態添加路由addRoutes()會遇到下面的情況:
在addRoutes()之后第一次訪問被添加的路由會白屏,這是因為剛剛addRoutes()就立刻訪問被添加的路由,然而此時addRoutes()沒有執行結束,因而找不到剛剛被添加的路由導致白屏。因此需要從新訪問一次路由才行。

 

該如何解決這個問題 ?

此時就要使用next({ ...to, replace: true }) 來確保 addRoutes() 時動態添加的路由已經被完全加載上去。

 next({ ...to, replace: true }) 中的 replace: true 只是一個設置信息,告訴VUE本次操作后,不能通過瀏覽器后退按鈕,返回前一個路由。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM