vue-router4動態路由刷新404/白屏的解決

vue3+vue-router4+vuex4+vite實現動態路由的時候,出現刷新404或者空白

一、動態路由的實現:

1、在項目一開始,通過createRouter創建路由的時候,使用路由實例(通常有404、login等)。

2、登錄成功後,通過後臺接口獲取後端配置的路由,然後addRouter,並將路由存至vuex內。

3、路由跳轉,通過beforeEach路由導航守衛進行跳轉前的監聽,判斷是否有本地路由(vuex),如果沒有,通過接口獲取後端配置的路由,然後addRoute路由。

但遇見問題瞭:跳轉至某個頁面後,刷新404

第一步配置靜態路由的是,將不匹配地址同意導航到404頁面瞭,代碼如下

{
    // 找不到路由重定向到404頁面
    path: "/:pathMatch(.*)",
    component: Layout,
    redirect: "/404",
    hideMenu: true
  },

這就導致在動態權限添加路由的時候,所加的權限路由在使用地址匹配是都會被攔截到404頁面。輸入網址導航會,刷新頁面會,在頁面中通過點擊等方式直接觸發的路由不會出現404。

所以將此路由(404)從靜態路由表去除,放到動態權限路由獲取後再addRouter。

但是,當刷新頁面時,會出現白屏

提示沒有匹配到相應路徑,也就是說路由還沒加上。仔細查看vue-router官方API,有一個提示

而在代碼中,router.addRoute的觸發是在路由導航守衛中檢測到當前未保存動態菜單信息(vuex)。在這之後用next()放行,而根據官方提示和控制臺相關打印信息可以看到,warn提示在addRouter添加路由之前,所以解決方法是將next()改為next(to),觸發新的一個導航,此時可以正確匹配到動態路由的相應地址。

到此這篇關於vue-router4動態路由刷新404/白屏的解決的文章就介紹到這瞭,更多相關vue-router4刷新動態路由內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: