国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 關(guān)于動(dòng)態(tài)路由刷新出現(xiàn)空白頁(yè)最優(yōu)解

這篇具有很好參考價(jià)值的文章主要介紹了vue3 關(guān)于動(dòng)態(tài)路由刷新出現(xiàn)空白頁(yè)最優(yōu)解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

動(dòng)態(tài)路由刷新出現(xiàn)空白頁(yè):

原因:刷新頁(yè)面的時(shí)候動(dòng)態(tài)路由會(huì)刷新掉,然后動(dòng)態(tài)路由會(huì)重新加載,而匹配路由會(huì)在加載路由之前,所以會(huì)導(dǎo)致空白頁(yè)

router.beforeEach(async (to, from, next) => {
    
    const whiteList = ['/login']
    let token = store.getters.GET_TOKEN;//token
    let hasRoutes=store.state.hasRoutes; //默認(rèn)是false,刷新頁(yè)面這個(gè)也是false
    let menuList=store.getters.GET_MENULIST; //后端返回的菜單列表
    
    if (token) {
        
        if(!hasRoutes){
            bindRoute(menuList);//添加動(dòng)態(tài)路由
            store.commit("SET_ROUTES_STATE",true);
            }
        next();
    } else {
        if (whiteList.includes(to.path)) {
            next();
        } else {
            next('/login');
        }
    }
})
//添加動(dòng)態(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,或者直接跳回首頁(yè)
在你加載路由的地方
遞歸調(diào)用:next({ …to, replace: true });(慎用,如果你的后臺(tái)管理table是帶標(biāo)簽會(huì)有問(wèn)題,沒(méi)有放對(duì)位置會(huì)死循環(huán))
跳回首頁(yè):next({path:‘/index’})
附上解決的代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-610363.html

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');
        }
    }
})
//添加動(dòng)態(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
}

到了這里,關(guān)于vue3 關(guān)于動(dòng)態(tài)路由刷新出現(xiàn)空白頁(yè)最優(yōu)解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue-element-admin vue設(shè)置動(dòng)態(tài)路由 刷新頁(yè)面后出現(xiàn)跳轉(zhuǎn)404頁(yè)面Bug 解決方法

    vue-element-admin vue設(shè)置動(dòng)態(tài)路由 刷新頁(yè)面后出現(xiàn)跳轉(zhuǎn)404頁(yè)面Bug 解決方法

    做項(xiàng)目時(shí)遇到的這個(gè)bug,因?yàn)槌颂?04之外也沒(méi)太大影響,之前就一直放著沒(méi)管,現(xiàn)在項(xiàng)目基本功能實(shí)現(xiàn)了,轉(zhuǎn)頭處理了一下,現(xiàn)在在這里記錄一下解決方法 這個(gè)bug的具體情況是:設(shè)置了動(dòng)態(tài)路由之后,不同的用戶登錄之后顯示了不同的側(cè)邊欄,在側(cè)邊欄點(diǎn)擊菜單,渲染對(duì)應(yīng)

    2024年04月28日
    瀏覽(90)
  • Vue路由模式(history模式 刷新頁(yè)面空白解決方案)

    Vue路由模式(history模式 刷新頁(yè)面空白解決方案)

    vue路由的三種模式 Hash模式 、 History模式 、 abstract 模式 Vue3: Hash 模式是用 createWebHashHistory() 創(chuàng)建的: Vue2 它在內(nèi)部傳遞的實(shí)際 URL 之前使用了一個(gè)哈希字符(#)。由于這部分 URL 從未被發(fā)送到服務(wù)器,所以它不需要在服務(wù)器層面上進(jìn)行任何特殊處理。不過(guò),它在 SEO 中確實(shí)有

    2024年02月12日
    瀏覽(31)
  • 解決Vue3+Vite3 打包部署到nginx后配置非根目錄刷新頁(yè)面報(bào)錯(cuò)空白

    解決Vue3+Vite3 打包部署到nginx后配置非根目錄刷新頁(yè)面報(bào)錯(cuò)空白

    報(bào)錯(cuò)內(nèi)容 解決方法 router文件 vite.config.ts nginx.conf 配置中路徑apps是我自建的存放前端頁(yè)面的文件夾 起關(guān)鍵作用的是 try_files $uri $uri/ /demo/index.html ,當(dāng)然上面項(xiàng)目文件夾demo也需保持一致 alias 后面的路徑是Vue項(xiàng)目打包后dist靜態(tài)文件服務(wù)器存放路徑,一般在nginx下面建一個(gè)文件夾

    2024年02月11日
    瀏覽(99)
  • vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問(wèn)題 [Vue Router warn]: No match found for location with path “xxx“

    vue3 中動(dòng)態(tài)添加路由出現(xiàn)的問(wèn)題 [Vue Router warn]: No match found for location with path “xxx“

    最近想嘗試 vue3 + elementplus + axios + pinia 封裝一個(gè)通用的后臺(tái)模板,寫(xiě)到 vue-router 添加動(dòng)態(tài)路由時(shí),有一個(gè)不影響代碼運(yùn)行但是又有提示的報(bào)錯(cuò),因此進(jìn)行記錄,方便大家進(jìn)行解決 圖片圈出的路由是動(dòng)態(tài)加載的路由 404等報(bào)錯(cuò)頁(yè)面不再需要放在所有路由后面,可在一開(kāi)始的時(shí)候

    2024年02月09日
    瀏覽(23)
  • Vue3中使用History模式引發(fā)刷新頁(yè)面出現(xiàn)404的問(wèn)題

    在vue3中的路由中,路由間的跳轉(zhuǎn)是不刷新瀏覽器的,也就是用ajax來(lái)請(qǐng)求后端接口對(duì)組件進(jìn)行增量更新,hash模式中#后面的路徑都不會(huì)直接發(fā)送給后端,都是前端自己在玩,但是路徑中有\(zhòng)\\'#\\\'不利于seo優(yōu)化而且也不美觀,一旦在history模式下刷新瀏覽器,就會(huì)相當(dāng)于直接請(qǐng)求后端中對(duì)應(yīng)uri的

    2024年02月17日
    瀏覽(22)
  • vue 動(dòng)態(tài)路由刷新失效及404頁(yè)面處理

    在開(kāi)發(fā)后臺(tái)管理項(xiàng)目,我們會(huì)使用vue動(dòng)態(tài)路由做權(quán)限管理,但是使用vue動(dòng)態(tài)路由時(shí)會(huì)遇到一些坑,這里總結(jié)一下,并提供解決思路 問(wèn)題:刷新頁(yè)面時(shí)會(huì)把a(bǔ)ddRouter添加的動(dòng)態(tài)路由刷新掉,因此瀏覽器找不到之前添加的路由,便會(huì)進(jìn)入白屏頁(yè)面或者404頁(yè)面 處理方式:判斷是否刷

    2024年02月12日
    瀏覽(28)
  • 關(guān)于vue路由跳轉(zhuǎn)后的頁(yè)面不會(huì)刷新的解決辦法

    做uni項(xiàng)目的時(shí)候遇到的情況:1,父組件頁(yè)面刷新了之后 需要觸底加載的子組件能觸底加載,否則不能加載。2,子組件不能觸底加載,只需要刷新之后就能觸底加載。以上的刷新不包括下拉刷新。3. 可能因?yàn)榘艘粚觮ab頁(yè)導(dǎo)致跳轉(zhuǎn)進(jìn)頁(yè)面沒(méi)有請(qǐng)求數(shù)據(jù)的問(wèn)題。 我的解決辦法是

    2024年02月11日
    瀏覽(28)
  • vue3.2項(xiàng)目中使用history路由模式刷新后頁(yè)面404

    開(kāi)發(fā)過(guò)程中,路由可以正常訪問(wèn),打包后也可以正常訪問(wèn),但是一刷新頁(yè)面就會(huì)出現(xiàn)404錯(cuò)誤 方法一:修改為Hash路由模式 在router/index.ts文件中,將history路由模式修改為hash路由模式即可。 history路由模式: hash路由模式: 方法二、修改后臺(tái)偽靜態(tài) Nginx: Apache: 可以參考下這篇文

    2024年02月11日
    瀏覽(28)
  • taro開(kāi)發(fā)微信小程序禁止下拉刷新(ios下拉出現(xiàn)空白問(wèn)題)

    一、問(wèn)題描述 最近用tarojs在做一個(gè)小程序項(xiàng)目時(shí),首頁(yè)需要禁止下拉刷新,于是在page.json里面添加了這段話 \\\"enablePullDownRefresh\\\":false 全局關(guān)閉下拉刷新,這段話確實(shí)禁止了下拉刷新,無(wú)論是安卓手機(jī)端還是蘋(píng)果端,但是在蘋(píng)果端卻出現(xiàn)了一個(gè)問(wèn)題,整個(gè)頁(yè)面雖然不能下拉刷新

    2024年02月13日
    瀏覽(19)
  • vue關(guān)于靜態(tài)路由和動(dòng)態(tài)路由:

    vue關(guān)于靜態(tài)路由和動(dòng)態(tài)路由:

    這篇文章寫(xiě)得超詳細(xì)!??! ??vue實(shí)現(xiàn)動(dòng)態(tài)路由一步到位_vue動(dòng)態(tài)路由怎么實(shí)現(xiàn)_ds_surk的博客-CSDN博客 目錄 靜態(tài)路由的配置: 步驟:? 動(dòng)態(tài)路由的配置: 步驟: 代碼實(shí)現(xiàn): 步驟2詳解: 步驟3詳解: 步驟4詳解: 其他問(wèn)題: 步驟:? 1、router的index.js寫(xiě)幾個(gè)頁(yè)面—2、router的per

    2024年02月06日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包