国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

vue 動態添加的路由頁面刷新時失效的原因及解決方案

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

昨天在做vue后臺管理系統有關權限頁面動態添加到路由的功能時,遇到一個問題:動態添加的路由頁面,在頁面刷新時出現了404的情況。

場景

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

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

接口返回

vue 動態添加的路由頁面刷新時失效的原因及解決方案

前端菜單定義

vue 動態添加的路由頁面刷新時失效的原因及解決方案

vuex中的方法

vue 動態添加的路由頁面刷新時失效的原因及解決方案

vue 動態添加的路由頁面刷新時失效的原因及解決方案

出現的問題

登錄后,通過調用vuex中的方法,完成獲取權限code,動態篩選權限路由頁面操作,然后通過router.addRoute()將有權限菜單添加到路由中,進入動態添加的路由頁面,刷新頁面出現404

原因分析

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

解決方案

VUEX store中存儲的數據會在頁面刷新時清空。在路由的全局導航router.beforeEach處做個判斷,根據VUEX中存放的list是否有值來判斷頁面是否是刷新,如果不為0,則是第一次登陸,登錄后會走匹配路由的方法,不會有問題;如果list.length為0,就為刷新頁面,需要重新執行路由匹配,重新添加動態路由即可。

實現代碼 route/index.js的導航守衛中添加邏輯判斷

———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() //頁面刷新后重新設置權限頁面動態路由,防止出現動態路由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)) {//是否已經登錄 否 去登陸頁面 next({ path: ’/login’, query: { redirect: to.fullPath } }) } else { //已登錄用戶進入頁面 if (to.path === ’/login’) { next({ path: ’/index’ }) } else { reSetPermissionList(to).then(data => { data === ’permCode’ ? next({ path: to.path, query: to.query }) : next() }) } } })總結

主要通過在全局導航處判斷VUEX中的數據是否存在,判斷頁面是否刷新,是的話重新走一遍權限路由匹配的方法。

以上就是vue動態添加的路由頁面刷新時失效的原因及解決方案的詳細內容,更多關于vue 路由頁面刷新的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
主站蜘蛛池模板: 欧美日韩国产在线观看一区二区三区 | 全部免费的毛片在线看美国 | 欧美在线综合视频 | 亚洲在线免费免费观看视频 | 网站在线看 | 久久久久久久99精品免费观看 | 久久精品青草社区 | 97久久曰曰久久久 | 91精品视频播放 | 狠狠澡夜夜澡人人爽 | 神马最新午夜限制片 | 91精品国产91久久久久久青草 | 色视频在线免费 | 欧美真人视频一级毛片 | 草草在线观看视频 | 国产自产自拍 | 国产精品黄页网站在线播放免费 | 亚洲一级毛片在线观播放 | 就草草在线观看视频 | 一级爱爱片一级毛片-一毛 一级爱做片免费观看久久 一级白嫩美女毛片免费 | 在线不卡一区 | 香蕉一区二区三区观 | 国产精品久久久久久久久久影院 | 一级不卡毛片免费 | 看欧美的一级毛片 | 亚洲欧美精品国产一区色综合 | 99精品视频在线 | 欧洲国产伦久久久久久久 | 日本成人免费观看 | 国产国语对白一级毛片 | 免费观看欧美一级牲片一 | 99精品视频观看 | 日本免费特黄aa毛片 | 日韩美一区二区 | 久久国产成人精品麻豆 | 日韩一区二区三区四区不卡 | 国产极品精频在线观看 | 欧美一区二区三区国产精品 | 99国产精品视频免费观看 | 久久免费视频6 | 国产在线91精品入口首页 |