vue動(dòng)態(tài)添加路由后刷新頁(yè)面白屏問(wèn)題及解決
vue動(dòng)態(tài)添加路由后刷新頁(yè)面白屏
作為一個(gè)前端新手,項(xiàng)目中遇到權(quán)限處理時(shí),通常會(huì)采用動(dòng)態(tài)添加路由的方法來(lái)實(shí)現(xiàn),此方法會(huì)在登陸時(shí)利用vuex將用戶信息以及菜單欄需要展示的菜單路由保存,這樣在用戶第一次登陸項(xiàng)目時(shí),動(dòng)態(tài)渲染的菜單路由頁(yè)面一切正常,但是當(dāng)再次刷新的時(shí)候,就會(huì)出現(xiàn)白屏現(xiàn)象。。查閱了很多網(wǎng)站,教程代碼一大堆,果斷放棄,最后請(qǐng)教了我?guī)煾?,一句話解決!
解決思路
頁(yè)面刷新白屏其實(shí)是因?yàn)関uex引起的,由于刷新頁(yè)面vuex數(shù)據(jù)會(huì)丟失,所以動(dòng)態(tài)添加路由這一步也就失效了(之前以為,將動(dòng)態(tài)添加的路由存儲(chǔ)在了sessionStorage中,就不會(huì)vuex刷新數(shù)據(jù)丟失的影響,師父解惑:在通過(guò)vuex中的state屬性存儲(chǔ)路由在sessionStorage中,只是存儲(chǔ)了左側(cè)菜單欄展示的信息path地址,但是并沒(méi)有存進(jìn)去路由詳細(xì)信息,比如name,meta值,利用vue插件即可看到本地route里面的真實(shí)數(shù)據(jù)!所以;只需要添加路由守衛(wèi),在每次頁(yè)面刷新的時(shí)候都來(lái)判斷是否添加的動(dòng)態(tài)路由【這里設(shè)置一個(gè)變量記錄是否添加的布爾值】,如果為false,即再次執(zhí)行一遍添加動(dòng)態(tài)路由的過(guò)程即可next()?。〈蠊Ω娉桑?/p>
詳細(xì)步驟:詳細(xì)代碼上一篇文章有,步驟只解決白屏問(wèn)題!
1、在store.js中的mutations中添加動(dòng)態(tài)路由;

第一次 addRouters(state.asyncrouters)由于state.asyncrouters是常量路由和動(dòng)態(tài)路由的合并,這樣添加會(huì)造成路由的重復(fù)添加----所以將異步路由拉出來(lái)添加就不會(huì)造成重復(fù)。
2、目的:在路由守衛(wèi)中判斷變量為false時(shí),調(diào)用此方法在執(zhí)行一遍:動(dòng)態(tài)添加路由!

3、如果操作完成還是白屏-------請(qǐng)注意黃色框中的next()的改變!

vue動(dòng)態(tài)添加路由后刷新失效
當(dāng)添加路由addRoutes的時(shí)候,正常點(diǎn)擊是沒(méi)問(wèn)題的,但是刷新一次頁(yè)面,那么動(dòng)態(tài)添加的路由就會(huì)失效,
用getRoutes() 打印出來(lái)看的時(shí)候確定路由已經(jīng)添加進(jìn)去了,所以這個(gè)原因應(yīng)該是
當(dāng)你執(zhí)行到addRoutes時(shí),路由要添加進(jìn)去了,但是,路由不是響應(yīng)式的,從執(zhí)行循序來(lái)看,地址欄快于路由的添加,那找不到這個(gè)路徑了就只能白屏了,除非設(shè)置了404的頁(yè)面
那么怎么解決這個(gè)問(wèn)題, 只需要再進(jìn)行一次攔截就好了,代碼如下:

實(shí)測(cè)過(guò),這樣已經(jīng)解決刷新頁(yè)面空白的問(wèn)題了,
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue實(shí)現(xiàn)Chrome小恐龍游戲的示例代碼
Google 給 Chrome 瀏覽器加了一個(gè)有趣的彩蛋,本文就詳細(xì)的介紹一下Vue實(shí)現(xiàn)Chrome小恐龍游戲的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04
vue中定義全局聲明vscode插件提示找不到問(wèn)題解決
這篇文章主要為大家介紹了vue中定義全局聲明vscode插件提示找不到問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
vue3實(shí)現(xiàn)圖片瀑布流展示效果實(shí)例代碼
這篇文章主要介紹了vue3實(shí)現(xiàn)圖片瀑布流展示效果的相關(guān)資料,該組件可以調(diào)整列數(shù)、支持懶加載、自定義每頁(yè)滾動(dòng)數(shù)量、高度和點(diǎn)擊效果,作者展示了組件的效果,并詳細(xì)說(shuō)明了實(shí)現(xiàn)方法,包括組件的創(chuàng)建和依賴的工具庫(kù),需要的朋友可以參考下2024-11-11
vue?hash模式改成history,同時(shí)實(shí)現(xiàn)spa預(yù)渲染問(wèn)題
這篇文章主要介紹了vue?hash模式改成history,同時(shí)實(shí)現(xiàn)spa預(yù)渲染問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Vue源碼探究之虛擬節(jié)點(diǎn)的實(shí)現(xiàn)
這篇文章主要介紹了Vue源碼探究之虛擬節(jié)點(diǎn)的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-04-04
Vue數(shù)據(jù)監(jiān)聽(tīng)器watch和watchEffect的使用
今天我們來(lái)學(xué)習(xí)一下watch監(jiān)聽(tīng)器和它的好兄弟watchEffect監(jiān)聽(tīng)器。這個(gè)相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,用的不是很多,當(dāng)然了,根據(jù)自己的項(xiàng)目情況自行決定使用,希望對(duì)大家有所幫助2023-02-02

