亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:3日期:2022-11-08 17:44:20

前言

最近在做一個精品課程后臺管理系統,其中涉及文件上傳和文件列表展示,我不想將他們寫入一個組件,故分開兩個組件實現,但由于上傳文件需要時間,這時要是用戶切換別的組件查看時,上傳文件組件就銷毀了,導致文件上傳失敗,所以需要采取keep-alive技術實現不銷毀上傳文件組件,同時也由于系統模塊較多,所以需要多組件進行嵌套。

問題:多組件嵌套下如何指定對應的一個或多個組件存活呢?

*tips:要是對于Vue使用keep-alive的基本用法不熟悉的也可以點擊查看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’})

這樣就保證了移除tag后,相應的組件名稱也不會被緩存

以上這篇vue keep-alive實現多組件嵌套中個別組件存活不銷毀的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 青青草久热精品视频在线观看 | 国产免费一区二区在线看 | 欧美在线 | 亚洲 | 曰本一级毛片免费播放 | 一级毛片真人不卡免费播 | 青青热久免费精品视频在线观看 | 91在线免费视频观看 | 日本xxx护士与黑人 日本xxx免费视频 | 亚洲男人的天堂网站 | 手机看片日韩在线 | 中文字幕三级久久久久久 | 亚洲精品成人456在线播放 | 123456成年免费视频 | 啪啪亚洲| 久久黄色影片 | 亚洲夂夂婷婷色拍ww47 | 中国一级黄色影片 | 国产美腿丝袜福利视频在线观看 | 深夜影院在线视频观看 | 美国一级毛片免费视频观看 | 亚洲美女在线视频 | 日日干夜夜干 | 久久亚洲人成国产精品 | 成年男女免费视频观看性 | 亚洲免费毛片 | 欧美 综合 社区 国产 | 国产福利视频一区二区微拍视频 | 女人被狂躁的视频免费免费看 | 国产一区二区三区四区在线污 | 国产亚洲视频在线观看 | 91麻豆国产在线观看 | 亚洲国产精品日韩在线 | 国产一区视频在线 | 国产 麻豆 欧美亚洲综合久久 | 欧美激情视频一区二区免费 | 91色久| 拍拍拍无挡视频免费全程1000 | 国产精品视频一区日韩丝袜 | 国内精品久久久久影院6 | 曰本人一级毛片免费完整视频 | 中国黄色网址大全 |