最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3動態(tài)路由刷新出現(xiàn)空白頁的原因與最優(yōu)解

 更新時間:2023年11月16日 16:01:51   作者:二月如若微風  
頁面刷新白屏其實是因為vuex引起的,由于刷新頁面vuex數(shù)據(jù)會丟失,這篇文章主要給大家介紹了關(guān)于vue3動態(tài)路由刷新出現(xiàn)空白頁的原因與最優(yōu)解的相關(guān)資料,需要的朋友可以參考下

動態(tài)路由刷新出現(xiàn)空白頁:

原因:刷新頁面的時候動態(tài)路由會刷新掉,然后動態(tài)路由會重新加載,而匹配路由會在加載路由之前,所以會導致空白頁

router.beforeEach(async (to, from, next) => {
    const whiteList = ['/login']
    let token = store.getters.GET_TOKEN;//token
    let hasRoutes=store.state.hasRoutes; //默認是false,刷新頁面這個也是false
    let menuList=store.getters.GET_MENULIST; //后端返回的菜單列表
    if (token) {
        if(!hasRoutes){
            bindRoute(menuList);//添加動態(tài)路由
            store.commit("SET_ROUTES_STATE",true);
            }
        next();
    } else {
        if (whiteList.includes(to.path)) {
            next();
        } else {
            next('/login');
        }
    }
})
//添加動態(tài)路由
const bindRoute = (menuList) => {
    let newRoutes = router.options.routes;
    menuList.forEach(menu => {
        if (menu.children) {
            menu.children.forEach(m => {
                // 菜單轉(zhuǎn)成路由
                let route = menuToRoute(m, menu.name);
                if (route) {
                    newRoutes[0].children.push(route); // 添加到路由管理
                }
            })
        }
    })
    // 重新添加到路由
    newRoutes.forEach(route => {
        router.addRoute(route)
    })
}
// 菜單轉(zhuǎn)成路由
const menuToRoute = (menu, parentName) => {
    let route = {
        name: menu.name,
        path: menu.path,
        meta: {
            parentName: parentName
        },
        children:[],
    }
    if (!menu.component) {
        route.component = ''
    } else {
        route.component = () => import('@/views/' + menu.component + '.vue')
    }
    return route
}

解決辦法:遞歸再調(diào)用beforEach,或者直接跳回首頁

在你加載路由的地方

遞歸調(diào)用:next({ …to, replace: true });(慎用,如果你的后臺管理table是帶標簽會有問題,沒有放對位置會死循環(huán))

跳回首頁:next({path:‘/index’})附上解決的代碼:

router.beforeEach(async (to, from, next) => {
    const whiteList = ['/login']
    let token = store.getters.GET_TOKEN;
    let hasRoutes=store.state.hasRoutes;
    let menuList=store.getters.GET_MENULIST;
    if (token) {
        console.log(store.state.editabTabs)
        if(!hasRoutes){
            bindRoute(menuList);
            store.commit("SET_ROUTES_STATE",true);
            //next({ ...to, replace: true });//----------解決
            next({path:'/index'}); //----------解決
            }
        next();
    } else {
        if (whiteList.includes(to.path)) {
            next();
        } else {
            next('/login');
        }
    }
})
//添加動態(tài)路由
const bindRoute = (menuList) => {
    let newRoutes = router.options.routes;
    menuList.forEach(menu => {
        if (menu.children) {
            menu.children.forEach(m => {
                // 菜單轉(zhuǎn)成路由
                let route = menuToRoute(m, menu.name);
                if (route) {
                    newRoutes[0].children.push(route); // 添加到路由管理
                }
            })
        }
    })
    // 重新添加到路由
    newRoutes.forEach(route => {
        router.addRoute(route)
    })
}
// 菜單轉(zhuǎn)成路由
const menuToRoute = (menu, parentName) => {
    let route = {
        name: menu.name,
        path: menu.path,
        meta: {
            parentName: parentName
        },
        children:[],
    }
    if (!menu.component) {
        route.component = ''
    } else {
        route.component = () => import('@/views/' + menu.component + '.vue')
    }
    return route
}

總結(jié) 

到此這篇關(guān)于vue3動態(tài)路由刷新出現(xiàn)空白頁的原因與最優(yōu)解的文章就介紹到這了,更多相關(guān)vue3動態(tài)路由刷新空白頁內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue-prop父組件向子組件進行傳值的方法

    vue-prop父組件向子組件進行傳值的方法

    下面小編就為大家分享一篇vue-prop父組件向子組件進行傳值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • vue cli3 調(diào)用百度翻譯API翻譯頁面的實現(xiàn)示例

    vue cli3 調(diào)用百度翻譯API翻譯頁面的實現(xiàn)示例

    這篇文章主要介紹了vue cli3 調(diào)用百度翻譯API翻譯頁面的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • 解決vue項目axios每次請求session不一致的問題

    解決vue項目axios每次請求session不一致的問題

    這篇文章主要介紹了解決vue項目axios每次請求session不一致的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue生命周期beforeDestroy和destroyed調(diào)用方式

    vue生命周期beforeDestroy和destroyed調(diào)用方式

    這篇文章主要介紹了vue生命周期beforeDestroy和destroyed調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 淺析vue3項目中自定義指令的運用

    淺析vue3項目中自定義指令的運用

    自定義指令是一種在Vue應用程序中擴展HTML標簽的能力,通過自定義指令,我們可以直接在模板中使用指令名,下面我們就來看看項目中具體如何使用自定義指令的吧
    2023-08-08
  • vue中本地靜態(tài)圖片路徑寫法

    vue中本地靜態(tài)圖片路徑寫法

    這篇文章給大家介紹了vue中本地靜態(tài)圖片路徑寫法及Vue.js中引用圖片路徑的方式,需要的朋友參考下吧
    2018-03-03
  • 詳解如何在vue+element-ui的項目中封裝dialog組件

    詳解如何在vue+element-ui的項目中封裝dialog組件

    這篇文章主要介紹了詳解如何在vue+element-ui的項目中封裝dialog組件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • this.$router.push攜帶參數(shù)跳轉(zhuǎn)頁面的實現(xiàn)代碼

    this.$router.push攜帶參數(shù)跳轉(zhuǎn)頁面的實現(xiàn)代碼

    這篇文章主要介紹了this.$router.push攜帶參數(shù)跳轉(zhuǎn)頁面,this.$router.push進行頁面跳轉(zhuǎn)時,攜帶參數(shù)有params和query兩種方式,本文結(jié)合實例代碼給大家詳細講解,需要的朋友可以參考下
    2023-04-04
  • django中使用vue.js的要點總結(jié)

    django中使用vue.js的要點總結(jié)

    在本篇文章里小編給各位整理了關(guān)于django中使用vue.js需要注意的地方以及相關(guān)知識點,需要的朋友們跟著學習參考下。
    2019-07-07
  • vue+elementUI實現(xiàn)動態(tài)面包屑

    vue+elementUI實現(xiàn)動態(tài)面包屑

    這篇文章主要為大家詳細介紹了vue+elementUI實現(xiàn)動態(tài)面包屑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

芜湖县| 鹤岗市| 乌审旗| 镇安县| 广东省| 翁源县| 绥宁县| 鄱阳县| 大同市| 秦皇岛市| 平乐县| 正宁县| 许昌县| 宜阳县| 文水县| 珲春市| 凤阳县| 屯留县| 博兴县| 托克逊县| 上蔡县| 潼南县| 临江市| 洛阳市| 东莞市| 准格尔旗| 长沙县| 普兰县| 咸阳市| 梁平县| 色达县| 全州县| 高雄市| 醴陵市| 乡城县| 蕉岭县| 广南县| 务川| 宾阳县| 顺义区| 东阳市|