最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決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: 當(dāng)前的路由地址,也就是馬上要離開的地址
  • 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)瀏覽器在登錄頁反復(fù)跳轉(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)加入此路由表。

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

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

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

開發(fā)的哥們兒從網(wǎng)上找了一個簡單的框架,通過auth的配置來決定什么權(quán)限可以進入到什么頁面。具體操作就是登陸獲取用戶的權(quán)限,然后遍歷本地的總路由表匹配權(quán)限返回當(dāng)前用戶可以訪問的路由表。網(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)文章

  • 解決v-if 與 v-for 同時使用報錯的問題

    解決v-if 與 v-for 同時使用報錯的問題

    在進行項目開發(fā)的時候因為在一個標(biāo)簽上同時使用了v-for和v-if兩個指令導(dǎo)致的報錯,遇到這個問題如何解決呢?下面小編給大家?guī)砹岁P(guān)于v-if 與 v-for 使用報錯問題分析及解決方法,一起看看吧
    2022-03-03
  • vue綁定設(shè)置屬性的多種方式(5)

    vue綁定設(shè)置屬性的多種方式(5)

    這篇文章主要為大家詳細介紹了vue綁定設(shè)置屬性的多種方式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 深入理解Vue router的部分高級用法

    深入理解Vue router的部分高級用法

    這篇文章主要介紹了Vue router的部分高級用法,主要是針對已經(jīng)有初步了解Vue-router的人,通過本文主要給大家介紹路由元信息,滾動行為以及路由懶加載這幾個的使用方法。感興趣的朋友一起看看吧
    2018-08-08
  • vue數(shù)據(jù)更新了但在頁面上沒有顯示出來的解決方法

    vue數(shù)據(jù)更新了但在頁面上沒有顯示出來的解決方法

    有時候 vue 無法監(jiān)聽到數(shù)據(jù)的變化,導(dǎo)致數(shù)據(jù)變化但是視圖沒有變化,也就是數(shù)據(jù)更新了,但在頁面上沒有顯示出來,所以本文給出了三種解決方法,通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • element中的el-upload附件上傳與附件回顯

    element中的el-upload附件上傳與附件回顯

    這篇文章主要介紹了element中的el-upload附件上傳與附件回顯方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue2.0+ElementUI實現(xiàn)查詢條件展開和收起功能組件(代碼示例)

    Vue2.0+ElementUI實現(xiàn)查詢條件展開和收起功能組件(代碼示例)

    文章介紹了如何將查詢條件表單封裝成一個通用組件,以提高開發(fā)效率,組件支持多條件的折疊和展開功能,并提供了使用示例,感興趣的朋友一起看看吧
    2025-01-01
  • vue-router路由簡單案例介紹

    vue-router路由簡單案例介紹

    本篇文章主要介紹了vue-router路由的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 初學(xué)vue出現(xiàn)空格警告的原因及其解決方案

    初學(xué)vue出現(xiàn)空格警告的原因及其解決方案

    今天小編就為大家分享一篇初學(xué)vue出現(xiàn)空格警告的原因及其解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • Vue生命周期詳解

    Vue生命周期詳解

    這篇文章詳細介紹了Vue的生命周期,文中通過代碼示例介紹的非常詳細。對大家的學(xué)習(xí)有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • vue3+Element?Plus?v-model實現(xiàn)父子組件數(shù)據(jù)同步的案例代碼

    vue3+Element?Plus?v-model實現(xiàn)父子組件數(shù)據(jù)同步的案例代碼

    這篇文章主要介紹了vue3+Element?Plus?v-model實現(xiàn)父子組件數(shù)據(jù)同步,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2024-01-01

最新評論

西充县| 修武县| 元氏县| 石家庄市| 香格里拉县| 鄱阳县| 五河县| 阜新市| 日土县| 黄梅县| 姚安县| 彰武县| 民权县| 宣化县| 江安县| 修文县| 宝清县| 左权县| 仁怀市| 关岭| 阿坝| 云安县| 阿克陶县| 水城县| 开封县| 贵德县| 兴海县| 昌黎县| 商河县| 桐柏县| 美姑县| 安陆市| 垫江县| 晋中市| 海城市| 渑池县| 开阳县| 育儿| 高阳县| 恩施市| 天峻县|