亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案

瀏覽:2日期:2022-10-04 16:11:46
問題描述

昨天在做vue后臺(tái)管理系統(tǒng)有關(guān)權(quán)限頁面動(dòng)態(tài)添加到路由的功能時(shí),遇到一個(gè)問題:動(dòng)態(tài)添加的路由頁面,在頁面刷新時(shí)出現(xiàn)了404的情況。

場(chǎng)景

后臺(tái)管理系統(tǒng)的權(quán)限控制是通過在前端頁面定義權(quán)限code, 把code給后臺(tái)同學(xué)保存配置到表中,之后根據(jù)后臺(tái)返回的權(quán)限code列表與前端頁面配置的code菜單列表做篩選匹配,code相等的頁面就是有權(quán)限的頁面,再通過router.addRoute()動(dòng)態(tài)添加到路由中,有權(quán)限的路由才可以被訪問,否則會(huì)提示無權(quán)限。

固定路由一開始就會(huì)放在new Router中,比如登錄頁面login

接口返回

vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案

前端菜單定義

vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案

vuex中的方法

vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案

vue 動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案

出現(xiàn)的問題

登錄后,通過調(diào)用vuex中的方法,完成獲取權(quán)限code,動(dòng)態(tài)篩選權(quán)限路由頁面操作,然后通過router.addRoute()將有權(quán)限菜單添加到路由中,進(jìn)入動(dòng)態(tài)添加的路由頁面,刷新頁面出現(xiàn)404

原因分析

頁面刷新時(shí),路由重新初始化,動(dòng)態(tài)添加的路由此時(shí)已不存在,只有一些固定路由(比如登錄頁面)還在,所以出現(xiàn)了404的情況

解決方案

VUEX store中存儲(chǔ)的數(shù)據(jù)會(huì)在頁面刷新時(shí)清空。在路由的全局導(dǎo)航router.beforeEach處做個(gè)判斷,根據(jù)VUEX中存放的list是否有值來判斷頁面是否是刷新,如果不為0,則是第一次登陸,登錄后會(huì)走匹配路由的方法,不會(huì)有問題;如果list.length為0,就為刷新頁面,需要重新執(zhí)行路由匹配,重新添加動(dòng)態(tài)路由即可。

實(shí)現(xiàn)代碼 route/index.js的導(dǎo)航守衛(wèi)中添加邏輯判斷

———router.js————-

const constantRoutes = [ { path: ’/’, redirect: ’/login’ }, { path: ’/login’, name: ’login’, meta: { auth: false }, component: () => import(’@/views/login’) }, { path: ’/layout’, name: ’layout’, meta: { auth: true }, component: () => import(’@/views/layout/index’), children: [ { path: ’/index’, name: ’index’, component: () => import(’@/views/home’) } ] }, { path: ’*’, component: () => import(’@/views/error/404’) }]Vue.use(VueRouter)const createRouter = () => new VueRouter({ routes: constantRoutes })export function resetRouter() { const newRouter = createRouter() router.matcher = newRouter.matcher // reset router}const router = createRouter() //頁面刷新后重新設(shè)置權(quán)限頁面動(dòng)態(tài)路由,防止出現(xiàn)動(dòng)態(tài)路由404問題const reSetPermissionList = to => { return new Promise((resolve, reject) => { if (to.path !== ’/login’ && store.state.permission.permissionList.length === 0) { store .dispatch(’permission/getPermissionList’) .then(() => { resolve(’permCode’) }) .catch(error => { resolve(’permCode’) }) } else { resolve() } })}router.beforeEach((to, from, next) => { const accessToken = localStorage.getItem(’accessToken’) if (_.isEmpty(accessToken)) {//是否已經(jīng)登錄 否 去登陸頁面 next({ path: ’/login’, query: { redirect: to.fullPath } }) } else { //已登錄用戶進(jìn)入頁面 if (to.path === ’/login’) { next({ path: ’/index’ }) } else { reSetPermissionList(to).then(data => { data === ’permCode’ ? next({ path: to.path, query: to.query }) : next() }) } } })總結(jié)

主要通過在全局導(dǎo)航處判斷VUEX中的數(shù)據(jù)是否存在,判斷頁面是否刷新,是的話重新走一遍權(quán)限路由匹配的方法。

以上就是vue動(dòng)態(tài)添加的路由頁面刷新時(shí)失效的原因及解決方案的詳細(xì)內(nèi)容,更多關(guān)于vue 路由頁面刷新的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 日本不卡毛片一二三四 | 青青影院一区二区免费视频 | 无码精品一区二区三区免费视频 | 中文国产成人精品久久水 | 免费一级生活片 | 日韩欧美在线综合 | 国产免费高清国产在线视频 | 成人午夜精品久久不卡 | 久久国产精品无码网站 | 99视频在线| 欧美日韩性视频一区二区三区 | 欧美末成年videos丨 | 日韩不卡免费视频 | 综合色图| 污影院| 播放一级黄色录像 | 国产好大好爽久久久久久久 | 久久久久亚洲精品美女 | 一级做a爰片久久毛片图片 一级做a爰片久久毛片看看 | 亚洲欧美日韩精品高清 | 国产成人精品久久免费动漫 | 黄片123| 色婷婷久久综合中文久久一本` | 一级特级欧美aa毛片免费 | 亚洲爆操| 黄网址在线看 | 国产一区二区精品久久91 | 一级做a爱过程免费视频日本 | 国产素人在线观看 | 天天噜噜揉揉狠狠夜夜 | 在线精品自拍亚洲第一区 | 精品一区二区三区在线成人 | 男女爱爱免费高清 | 91精品国产综合成人 | 哪个网站能看毛片 | 国产最新精品 | 嫩草影院麻豆久久视频 | 毛色毛片免费看 | 免费网站在线观看国产v片 免费网站成人亚洲 | 亚洲欧美日本人成在线观看 | 国久久 |