中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue keep-alive實現多組件嵌套中個別組件存活不銷毀的方法

發布時間:2020-11-02 16:05:38 來源:億速云 閱讀:521 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關vue keep-alive實現多組件嵌套中個別組件存活不銷毀的方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

配置路由加以判斷是否使用keep-alive

MVideoUpload,MFileUpload為上傳文件組件,故想之存活,而其他組件則需要掛起刷新數據,但由于MVideoUpload,MFileUpload分別嵌套在MVideos,MFiles組件中,為了保證跳轉其他模塊組件的時候,上傳視頻和上傳文件的模塊不銷毀(因為一旦父組件銷毀,子組件自然也銷毀了),所以兩個父組件也需要存活,只是之后需要再加以判斷存活那幾個子組件。

路由js:

{
 path:'resource',
 name:'MResource',
 meta:{
 auth:true  //是否需要登錄
 },
 component: () => import('../pages/manage/resource/Resource'),
 children:[
 {
  path: 'videos',
  name: 'MVideos',
  meta:{
  keepAlive:true, //包含存活組件
  auth:true  //是否需要登錄
  },
  component: () => import('../pages/manage/resource/videos/Videos'),
  children:[
  {
   path:'list',
   name:'MVideoList',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/videos/VideosList'),
  },
  {
   path:'upload',
   name:'MVideoUpload',
   meta:{
   keepAlive:true, //需要存活
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/videos/UploadVideo'),
  },
  {
   path:'update',
   name:'MVideoUpdate',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/videos/UpdateVideo'),
  },
  {
   path:'detail',
   name:'MVideoDetail',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/videos/VideoDetail'),
  },
  ],
  redirect:{name: 'MVideoList'}
 },
 {
  path:'files',
  name:'MFiles',
  meta:{
  keepAlive:true, //包含存活組件
  auth:true  //是否需要登錄
  },
  component: () => import('../pages/manage/resource/files/Files'),
  children:[
  {
   path: 'list',
   name: 'MFileList',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/files/FilesList'),
  },
  {
   path:'upload',
   name:'MFileUpload',
   meta:{
   keepAlive:true, //需要存活
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/files/UploadFile'),
  },
  {
   path:'update',
   name:'MFileUpdate',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/files/UpdateFile'),
  },
  {
   path:'detail',
   name:'MFileDetail',
   meta:{
   auth:true  //是否需要登錄
   },
   component: () => import('../pages/manage/resource/files/FileDetail'),
  },
  ],
  redirect:{name: 'MFileList'}
 },
 ],
 redirect:{name: 'MFiles'}
},

各父組件都是如此:

一層層判斷哪些組件需要存活不銷毀,從而實現對任意一個組件切換組件時使其存活不銷毀。

<transition name="component-fade" mode="out-in">
 <keep-alive>
 <router-view v-if="$route.meta.keepAlive" />
 </keep-alive>
</transition>
<transition name="component-fade" mode="out-in">
 <router-view v-if="!$route.meta.keepAlive" />
</transition>

補充知識:vue頁簽模式+keep-alive解決關閉頁簽后緩存組件未銷毀問題

1.簡介

vue使用頁簽模式,組件使用keep-alive緩存,發現頁簽關閉后緩存組件未銷毀,只是出于非活動狀態

2.解決

使用keep-alive的include屬性,這個屬性包含了緩存組件的名稱,可以將其賦值為動態屬性

頁簽store

export default {
 state: {
  current: layui.data('tag').current || {},//當前頁簽
  list: layui.data('tag').list || []//頁簽列表
 },
 getters:{
  /** 標簽名稱列表 */
  tagNames (state) {
   return state.list.map(function(tag){return tag.name})
  }
 }
}

list是頁簽對象列表

tagNames為頁簽名稱列表,即要緩存的頁簽組件名稱

<keep-alive v-if="isRouterAlive" :include="tagNames">
   <router-view ></router-view>
</keep-alive>
...mapGetters({
  tagNames:'tagNames'
})

看完上述內容,你們對vue keep-alive實現多組件嵌套中個別組件存活不銷毀的方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钟山县| 桐庐县| 陈巴尔虎旗| 永康市| 马关县| 德昌县| 红安县| 淳安县| 黄大仙区| 长顺县| 宜阳县| 屏东县| 札达县| 淮安市| 威远县| 铁岭市| 文登市| 安龙县| 扎兰屯市| 昌宁县| 堆龙德庆县| 海林市| 龙里县| 盐津县| 海淀区| 沿河| 阿坝| 华坪县| 宝兴县| 临邑县| 浑源县| 恭城| 高州市| 兴山县| 农安县| 宜兴市| 长治县| 余庆县| 铜鼓县| 两当县| 沾化县|