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

詳解vue-template-admin三級路由無法緩存的解決方案

 更新時間:2020年03月10日 14:56:48   作者:Cyanxxx  
這篇文章主要介紹了vue-template-admin三級路由無法緩存的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

1. 為什么三級會緩存不了

在src/layout/AppMain組件:


keep-alive的組件依賴cachedViews,cachedViews是store中的一個狀態(tài),cachedViews的邏輯在src/layout/TagView


當路由變更時就會調(diào)用addViewTags,addViewTag會根據(jù)匹配的路由name屬性進行緩存。而用到三級路由的時候,拿到name只能時第三級路由的name,二級路由組件的名字會丟失,keep-alive就不會進行緩存。
知道原因之后,第一個想法就是把二級路由的name也加上去就好了。要實現(xiàn)這個也很簡單,只需要獲取到matched屬性就可以拿到匹配到的路由組件,把它加入到cachedViews數(shù)組就好了。但是有個問題就是,假設這里有個二級路由1-1,三級路由1-1-1,1-1-2,當要關掉1-1-1組件時,你到底要不要把1-1給刪了,如果刪了,緩存能順利失效,但是如果你之前是打開了1-1-2,緩存的路由就會失效,因為它是依賴1-1的。如果不刪的話,在側邊欄打開1-1-1的鏈接的時候,它又會重新復用回原本的組件。

2 把三級(概念上的)轉化為二級(真實)

在這里想來,如果1-1-1,1-1-2,其實只是因為分在同類別里,兩者如果沒有實際共享的數(shù)據(jù),那可以考慮把1-1的路由組件關掉,在我實踐的項目就是如此,1-1-1和1-1-2只是同屬在二級菜單下,并沒有共享數(shù)據(jù)。但是生成菜單的時候是用router表的,那么生成菜單的用原本的,生成路由的時候用替換的。

下面是demo代碼:

將要被替換的路由加上noCompoent屬性。

function delteFakeParent(router,prefix) {
 var newRouter = { ...router }
 if(prefix){
 newRouter.path = prefix + '/' + router.path
 }
 if (!router.children) return newRouter
 var children = []
 if (router.noCompoent) {
 for (let i = 0; i < router.children.length; i++) {
  const item = delteFakeParent(router.children[i], newRouter.path)
  if (Array.isArray(item)) {
  item.forEach(el => {
   children.push(el)
  })
  }else{
  children.push(item)
  }
 }
 newRouter = children
 } else {
 for (let i = 0; i < router.children.length; i++) {
  const item = delteFakeParent(router.children[i])
  if (Array.isArray(item)) {
  item.forEach(el => {
   children.push(el)
  })
  }
 }
 newRouter.children = children
 }
 
 return newRouter
}

var backendManageRouter1 = {
 name: 'BackendManage',
 meta: {
 title: '后臺管理',
 icon: 'index-management'
 },
 children: [{
 path: 'user-manage',
 name: 'UserManage',
 noCompoent: true,
 meta: {
  title: '用戶管理',
  icon: 'rule-definition'
 },
 alwaysShow: true,
 children: [{
  path: 'user',
  name: 'User',
  meta: {
  title: '用戶管理',
  icon: 'quality-control'
  },
  noCompoent: true,
  children: [
  {
   path: 'a',
   name: 'ad',
   meta: {
   title: 'ad管理',
   icon: 'quality-control'
   },
  }
  ]
 }, {
  path: 'role',
  name: 'Role',
  meta: {
  title: '角色管理',
  icon: 'rule-task-monitor'
  }
 }]
 }]
}

delteFakeParent這個函數(shù)做的就是創(chuàng)建一個router副本,遍歷它的children,當這個路由被標記為noCompoent: true,就把它替換成它的children,回溯的過程中如果router是一個數(shù)組就代表這個router是被替換過,那么就遍歷它,把它每一項放到router.children里面,這樣就可以做到跟它其他children平級。
修改了這個之后要記著把真實router和菜單router同時暴露出去,菜單的項目是讀取store中的permission.js的routers,那么這里set-router一方面要處理真是router和菜單router,需要增加一個state

3. 使用vuex存儲數(shù)據(jù)

上面那個方案也只是針對二級路由組件不需要顯示出來,那么可以放到一級路由的children里面,但是如果是有需要的話,還是使用vuex來存儲數(shù)據(jù)比較好。

到此這篇關于vue-template-admin三級路由無法緩存的解決方案的文章就介紹到這了,更多相關vue-template-admin三級路由緩存內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • VUE2 前端實現(xiàn) 靜態(tài)二級省市聯(lián)動選擇select的示例

    VUE2 前端實現(xiàn) 靜態(tài)二級省市聯(lián)動選擇select的示例

    下面小編就為大家分享一篇VUE2 前端實現(xiàn) 靜態(tài)二級省市聯(lián)動選擇select的示例。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Vue-axios-post數(shù)據(jù)后端接不到問題解決

    Vue-axios-post數(shù)據(jù)后端接不到問題解決

    這篇文章主要介紹了Vue-axios-post數(shù)據(jù)后端接不到問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • vue響應式原理與雙向數(shù)據(jù)的深入解析

    vue響應式原理與雙向數(shù)據(jù)的深入解析

    Vue 最獨特的特性之一,是其非侵入性的響應式系統(tǒng)。下面這篇文章主要給大家介紹了關于vue響應式原理與雙向數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2021-06-06
  • 淺談vue?腳手架文件結構及加載過程

    淺談vue?腳手架文件結構及加載過程

    這篇文章主要介紹了vue腳手架文件結構及加載過程淺談,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • Vue中大屏適配和局部適配的方案總結

    Vue中大屏適配和局部適配的方案總結

    這篇文章主要為大家詳細介紹了如何通過Vue.js的Mixins功能結合JavaScript實現(xiàn)頁面內(nèi)容的自適應縮放,以適應不同比例的屏幕,需要的小伙伴可以參考下
    2025-03-03
  • vue在線預覽word、excel、pdf、txt、圖片的方法實例

    vue在線預覽word、excel、pdf、txt、圖片的方法實例

    最近工作中遇到了一個需要在線預覽文件的需求,所以這篇文章主要給大家介紹了vue在線預覽word、excel、pdf、txt、圖片的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • 詳解Vue源碼中一些util函數(shù)

    詳解Vue源碼中一些util函數(shù)

    這篇文章主要介紹了Vue源碼中一些util函數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • 使用ElementUI el-upload實現(xiàn)一次性上傳多個文件

    使用ElementUI el-upload實現(xiàn)一次性上傳多個文件

    在日常的前端開發(fā)中,文件上傳是一個非常常見的需求,尤其是在用戶需要一次性上傳多個文件的場景下,ElementUI作為一款非常優(yōu)秀的Vue.js 2.0組件庫,為我們提供了豐富的UI組件,本文介紹了如何使用ElementUI el-upload實現(xiàn)一次性上傳多個文件,需要的朋友可以參考下
    2024-08-08
  • vue如何根據(jù)權限生成動態(tài)路由、導航欄

    vue如何根據(jù)權限生成動態(tài)路由、導航欄

    這篇文章主要介紹了vue如何根據(jù)權限生成動態(tài)路由、導航欄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue子組件與父組件詳細解析

    Vue子組件與父組件詳細解析

    這篇文章主要介紹的是Vue子組件與父組件,什么是父組件,什么是子組件很多時候面對這個問題我們都會有所混淆,下面文章我們就來詳細介紹,需要的朋友可以參考一下
    2021-10-10

最新評論

南陵县| 定远县| 马尔康县| 大新县| 彩票| 微博| 乐陵市| 乐平市| 石嘴山市| 丰城市| 宜川县| 辽中县| 方正县| 女性| 秦皇岛市| 德清县| 栖霞市| 桃江县| 新乐市| 绥芬河市| 马鞍山市| 扎赉特旗| 孟州市| 巫山县| 广汉市| 高阳县| 仙居县| 万山特区| 龙川县| 荆门市| 甘孜| 额尔古纳市| 邹平县| 东丽区| 临湘市| 玛纳斯县| 阜城县| 富宁县| 包头市| 额济纳旗| 渭南市|