溫馨提示×

溫馨提示×

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

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

vue使用keep-alive實現組件切換時保存原組件數據

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

vue使用keep-alive實現組件切換時保存原組件數據?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

使用keep-alive的過程

普通方法:直接使用keep-alive

<keep-alive>
 <router-view />
</keep-alive>

效果:雖然能使上傳文件組件存活,在切換組件時仍可繼續上傳

問題:其余各個組件都不會銷毀和重新掛起,導致所有組件的內容不會更新

更好一點的方法:配置路由加以判斷是否適用keep-alive

路由js:

//ManageFiles組件需要重新掛起刷新數據,而ManageUploadFile為上傳文件組件,故想之存活
{
 path:'files',
 name:'ManageFiles',
 component: () => import('../pages/course/manage/resource/files/Files'),
},
{
 path:'uploadfile',
 name:'ManageUploadFile',
 meta:{
 keepAlive:true  //是否存活標志
 },
 component: () => import('../pages/course/manage/resource/files/UploadFile'),
},

切換組件:

<template>
 <div class="manageResource">
 <keep-alive>
  <router-view v-if="$route.meta.keepAlive" />
 </keep-alive>
 <router-view v-if="!$route.meta.keepAlive" />
 </div>
</template>

效果圖:

(1)一開始為File組件,mounted()打印'我是File'

vue使用keep-alive實現組件切換時保存原組件數據

(2)第一次切換為UploadFile組件,mounted()打印'我是UploadFile'

vue使用keep-alive實現組件切換時保存原組件數據

(3)再次切換回File組件,mounted()再次重新打印'我是File'

vue使用keep-alive實現組件切換時保存原組件數據

(4)最后再次切換回UploadFile組件,因為它一直存活,所以不會重新觸發mounted()再次重新打印'我是UploadFile'

vue使用keep-alive實現組件切換時保存原組件數據

補充知識:vue 動態組件(tabs切換)keep-alive:主要用于保留組件狀態或避免重新渲染

通過keep-alive 保留數據值 填寫數據時切換到其他頁面,后返回當前頁數據保留 ,主要用于保留組件狀態或避免重新渲染

 <!--動態組件-component使用-->
 <div class="app">
 <ul>
 <li @click="currView='home'">首頁</li>
 <li @click="currView='abount'">關于我們</li>
 </ul>
 <!--通過keep-alive 保留數據值 填寫數據時切換到其他頁面,后返回當前頁數據保留-->
 <keep-alive>
 <component :is="currView"></component>
 </keep-alive>
 </div>
<script type="text/x-Template" id="homeTemp">
  <h3>首頁數據</h3>
</script>
<script type="text/x-Template" id="abountTemp">
  <h3>關于我們數據<input type="text"/></h3>
</script>
<script type="text/javascript">
 var vm=new Vue({
 el:'.app',
 data:{
  currView:"home"
 },
 components:{
  "home":{
   template:"#homeTemp"
  },
  "abount":{
  template:"#abountTemp"
  }
 }
 });
 
</script>

看完上述內容,你們掌握vue使用keep-alive實現組件切換時保存原組件數據的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女