vue使用keep-alive實現多元件巢狀中個別元件存活不銷燬
前言
最近在做一個精品課程後臺管理系統,其中涉及檔案上傳和檔案列表展示,我不想將他們寫入一個元件,故分開兩個元件實現,但由於上傳檔案需要時間,這時要是使用者切換別的元件檢視時,上傳檔案元件就銷燬了,導致檔案上傳失敗,所以需要採取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巢狀元件傳參Vue巢狀元件
- vue元件巢狀之 - 父元件向子元件傳值Vue元件巢狀
- vue的元件巢狀關係Vue元件巢狀
- 008. vue元件的巢狀Vue元件巢狀
- React 怎麼實現 Vue 的 <keep-alive> 元件ReactVueKeep-Alive元件
- Vue中keep-alive元件的理解VueKeep-Alive元件
- 聊聊keep-alive元件的使用及其實現原理Keep-Alive元件
- keep-alive元件使用Keep-Alive元件
- 爆炸銷燬動畫元件Explosions動畫元件
- vue的另一個內建元件keep-aliveVue元件Keep-Alive
- vue在元件銷燬的時候將非同步請求撤銷Vue元件非同步
- Vue +Element Ui 使用Upload元件實現多圖片上傳VueUI元件
- 1500行TypeScript程式碼在React中實現元件keep-aliveTypeScriptReact元件Keep-Alive
- Vue 3 路由元件快取keep-aliveVue路由元件快取Keep-Alive
- Vue路由+Tab元件實現多頁籤功能Vue路由元件
- 最近很火的Vue Vine是如何實現一個檔案中寫多個元件Vue元件
- vue實現autoComplete元件Vue元件
- vue中keep-alive保持使用過的狀態VueKeep-Alive
- Vue案例引發的「巢狀元件」通訊的簡單方式Vue巢狀元件
- 使用TypeScript給Vue 3.0寫一個指令實現元件拖拽TypeScriptVue元件
- el-menu使用遞迴元件實現多級選單元件遞迴元件
- 透過Keep-Alive實現防抖&節流元件Keep-Alive元件
- 用canvas實現一個vue彈幕元件CanvasVue元件
- 實現一個vue元件庫釋出到npmVue元件NPM
- Vue中的巢狀路由Vue巢狀路由
- 小程式選人控制元件 - 仿企業微信實現多選及多層級無規則巢狀控制元件巢狀
- 小程式選人控制元件 – 仿企業微信實現多選及多層級無規則巢狀控制元件巢狀
- vue 元件中solt 插槽使用Vue元件
- $attrs 與 $listeners 進行「巢狀元件」通訊巢狀元件
- vue元件使用Vue元件
- 純js實現 vue 元件 與 vue 單檔案元件對比JSVue元件
- 微信小程式如何阻止多層巢狀元件的點選事件冒泡微信小程式巢狀元件事件
- vue swiper 實現滾動條功能(這個可當元件引入使用)Vue元件
- 一個Vue媒體多段裁剪元件Vue元件
- VUE中setTimeout和setInterval自動銷燬Vue
- 利用Layer元件彈出多個對話方塊(非巢狀)與關閉及重新整理元件巢狀
- 動手擼元件系列 —— 1. 使用React實現一個Collapse元件元件React
- vue-cli多頁面應用實踐,實現元件預覽Vue元件