欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年02月26日 10:28:13   作者:暖風吹過的季節(jié)  
這篇文章主要介紹了vue動態(tài)添加的路由頁面刷新時失效的原因及解決方案,幫助大家更好的理解和學習使用vue,感興趣的朋友可以了解下

問題描述

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

場景

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

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

接口返回

前端菜單定義

vuex中的方法

出現的問題

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

原因分析

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

解決方案

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

實現代碼 route/index.js的導航守衛(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()
 
//頁面刷新后重新設置權限頁面動態(tài)路由,防止出現動態(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)) {//是否已經登錄 否 去登陸頁面
  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動態(tài)添加的路由頁面刷新時失效的原因及解決方案的詳細內容,更多關于vue 路由頁面刷新的資料請關注腳本之家其它相關文章!

相關文章

  • Vue中的slot使用插槽分發(fā)內容的方法

    Vue中的slot使用插槽分發(fā)內容的方法

    這篇文章主要介紹了Vue中的slot使用插槽分發(fā)內容的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • vue 組件中添加樣式不生效的解決方法

    vue 組件中添加樣式不生效的解決方法

    這篇文章主要介紹了vue 組件中添加樣式不生效的解決方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • vue 源碼解析之虛擬Dom-render

    vue 源碼解析之虛擬Dom-render

    這篇文章主要介紹了vue 源碼解析 --虛擬Dom-render的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 如何在vue中使用video.js播放m3u8格式的視頻

    如何在vue中使用video.js播放m3u8格式的視頻

    這篇文章主要介紹了如何在vue中使用video.js 播放m3u8格式的視頻,幫助大家更好的理解和學習使用vue,感興趣的朋友可以了解下
    2021-02-02
  • Vue SSR 即時編譯技術的實現

    Vue SSR 即時編譯技術的實現

    這篇文章主要介紹了Vue SSR 即時編譯技術的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • vue對象的深度克隆方式

    vue對象的深度克隆方式

    這篇文章主要介紹了vue對象的深度克隆方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue中axios利用blob實現文件瀏覽器下載方式

    vue中axios利用blob實現文件瀏覽器下載方式

    這篇文章主要介紹了vue中axios利用blob實現文件瀏覽器下載方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue實現表格分頁功能

    vue實現表格分頁功能

    這篇文章主要為大家詳細介紹了vue實現表格分頁功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Vue常用實例方法示例梳理分析

    Vue常用實例方法示例梳理分析

    在了解vue的常用的實例方法之前,我們應該先要了解其常用的實例屬性,你能了解到的vue實例屬性有哪些呢?小編在這里就列舉了幾個常用的vue實例的屬性。大家可以一起參考學習一下
    2022-08-08
  • vue與react詳細

    vue與react詳細

    react在中后臺項目中由于在處理復雜的業(yè)務邏輯或組件的復用問題比vue優(yōu)雅而被人認可,但也更需要團隊技術整體比較給力,領頭大佬的設計與把關能力要更優(yōu)秀,因此開發(fā)成本更大,下面文章就來詳細介紹,需要的朋友可以參考下
    2021-09-09

最新評論