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

解決router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)問題

 更新時間:2022年10月08日 14:29:57   作者:k55  
這篇文章主要介紹了解決router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

router.beforeEach()動態(tài)加載路由出現(xiàn)死循環(huán)

采用beforeEach做路由過濾,如果沒登錄就直接跳轉(zhuǎn)到登錄界面,然而發(fā)現(xiàn)個問題就是要么跳轉(zhuǎn)到登錄頁面、然后再調(diào)回首頁,要么卡著不動、要么出現(xiàn)空白頁面。

1、router.beforeEach( to , from ,next) 介紹

  • to: 即將路由的地址
  • form: 當前的路由地址,也就是馬上要離開的地址
  • next(): 執(zhí)行進入下一個路由
  • next(false): 禁止進入下一個路由
  • next('/login'): 路由到/login地址

2、兩種死循環(huán)問題

(1)路由到相同地址的死循環(huán)

比如在beforeEach中設(shè)置未登錄(userData為null)就跳轉(zhuǎn)到登錄頁面

在非登錄頁面是沒有問題的,但是在登錄頁面就出現(xiàn)了死循環(huán)或者空白頁,通過打印我們發(fā)現(xiàn)瀏覽器在登錄頁反復跳轉(zhuǎn)。

在登錄頁面因為沒登錄,userData為null,這時候通過next(’\login’)就會重定向到登錄頁面,重定向到登錄頁面后,這時候userData依然為空,那么就要繼續(xù)重定向登錄頁面,于是出現(xiàn)了死循環(huán)。

對這種情況加個判斷條件就能解決。

(2)動態(tài)加載路由表出現(xiàn)的死循環(huán)

在beforeEach()通過動態(tài)加載路由表

在beforeEach()中都會獲取路由表存入store,然后從store取出動態(tài)加入此路由表。

但是每次路由之前都會重新添加路由表,每次添加完路由表當前默認路徑是首頁(to.path顯示內(nèi)容)而不是登陸頁面,頁面會自動跳轉(zhuǎn)到首頁,但是如果這時候通過next(’/login’)跳轉(zhuǎn)到登錄頁面,那么就會重新路由,在路由前又開始重新添加路由表,然后當前路徑是首頁,這時候又要跳轉(zhuǎn)到登錄頁面因此就會出現(xiàn)死循環(huán)。

這時候我們就不能反復加載路由表,加個判斷條件就行了。

vue動態(tài)加載路由進入頁面白屏或beforeEach死循環(huán)踩坑

開發(fā)的哥們兒從網(wǎng)上找了一個簡單的框架,通過auth的配置來決定什么權(quán)限可以進入到什么頁面。具體操作就是登陸獲取用戶的權(quán)限,然后遍歷本地的總路由表匹配權(quán)限返回當前用戶可以訪問的路由表。網(wǎng)上大多數(shù)的方案是從后端接口獲取權(quán)限和路由表。此為兩者之間的差異,但是不影響填坑方案的可行性

先放上本地總路由表部分代碼,就是在這個表中根據(jù)權(quán)限進一步遍歷篩選的,通過硬編碼的方式寫在項目中,auth[]內(nèi)用數(shù)字、用中文、用單詞也都是可以的

const routerList = [{
    path: '/',
    component: Layout,
    redirect: '/dashboard',
    auth: [0, 1, 2],
    meta: {
      title: '首頁',
      icon: 'dashboard'
    },
    children: [{
      path: 'dashboard',
      name: 'Dashboard',
      component: () => import('@/views/dashboard/index'),
      meta: {
        title: '首頁',
        icon: 'dashboard'
      },
      auth: [0, 1, 2]
    }]
  },
  {
    path: '/enterprises',
    component: Layout,
    name: 'Enterprises',
    redirect: 'noRedirect',
    auth: [0, 1, 2],
    meta: {
      title: '智慧園區(qū)',
      icon: 'el-icon-office-building'
    },
    children: [
      {
        path: 'huanjingjiance',
        name: 'huanjingjiance',
        component: () => import('@/views/environment/monitor'),
        auth: [0, 2],
        meta: {
          title: '環(huán)境監(jiān)測'
        },
      }
    ]
  },
  {
    path: '/user',
    component: Layout,
    name: 'User',
    redirect: 'noRedirect',
    auth: [0, 1],
    meta: {
      title: '人員信息',
      icon: 'el-icon-user'
    },
    children: [{
      path: 'index',
      name: 'Index',
      component: () => import('@/views/user/index'),
      meta: {
        title: '個人信息'
      },
      auth: [0, 1],
    }]
  }
]

首先在路由中需要指定登錄的頁面,這個是不分權(quán)限的,所以不需要動態(tài)獲取

const constantRoutes = [
  {
    path: '/login',
    component: () => import('@/views/login/index'),
    hidden: true
  },
  ...dynamicRouter
]

var createRouter = () => new Router({
  mode: 'history',
  scrollBehavior: () => ({
    y: 0
  }),
  routes: constantRoutes
})

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue自定義指令詳細

    Vue自定義指令詳細

    這篇文章主要介紹了Vue自定義指令,文章從背景開始詳細介紹Vue自定義指令的詳細內(nèi)容,隨著Vue自定義指令的相關(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • vue+element實現(xiàn)動態(tài)換膚的示例代碼

    vue+element實現(xiàn)動態(tài)換膚的示例代碼

    本文主要介紹了vue+element實現(xiàn)動態(tài)換膚的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • vue parseHTML函數(shù)源碼解析 AST預備知識

    vue parseHTML函數(shù)源碼解析 AST預備知識

    這篇文章主要為大家介紹了vue parseHTML函數(shù)源碼解析 AST預備知識示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • Vue.js 圖標選擇組件實踐詳解

    Vue.js 圖標選擇組件實踐詳解

    這篇文章主要介紹了Vue.js 圖標選擇組件實踐詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue數(shù)據(jù)驅(qū)動模擬實現(xiàn)3

    Vue數(shù)據(jù)驅(qū)動模擬實現(xiàn)3

    這篇文章主要為大家詳細介紹了Vue數(shù)據(jù)驅(qū)動模擬實現(xiàn),教大家如何在某個對象中,新增某個屬性,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • vue-cli開發(fā)時,關(guān)于ajax跨域的解決方法(推薦)

    vue-cli開發(fā)時,關(guān)于ajax跨域的解決方法(推薦)

    下面小編就為大家分享一篇vue-cli開發(fā)時,關(guān)于ajax跨域的解決方法(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • jenkins自動構(gòu)建發(fā)布vue項目的方法步驟

    jenkins自動構(gòu)建發(fā)布vue項目的方法步驟

    這篇文章主要介紹了jenkins自動構(gòu)建發(fā)布vue項目的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • vue3+vite項目跨域配置踩坑實戰(zhàn)篇

    vue3+vite項目跨域配置踩坑實戰(zhàn)篇

    vue3是一個流行的前端框架,vite是一個快速的構(gòu)建工具,下面這篇文章主要給大家介紹了關(guān)于vue3+vite項目跨域配置踩坑實戰(zhàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 淺談vue項目優(yōu)化之頁面的按需加載(vue+webpack)

    淺談vue項目優(yōu)化之頁面的按需加載(vue+webpack)

    本篇文章主要介紹了vue項目優(yōu)化之頁面的按需加載(vue+webpack),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • vue+axios+java實現(xiàn)文件上傳功能

    vue+axios+java實現(xiàn)文件上傳功能

    這篇文章主要為大家詳細介紹了vue+axios+java實現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論