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

keep-Alive搭配vue-router實現(xiàn)緩存頁面效果的示例代碼

 更新時間:2020年06月24日 09:12:30   作者:他好像一條狗啊  
這篇文章主要介紹了keep-Alive搭配vue-router實現(xiàn)緩存頁面效果,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

  Vue工程中有些頁面需要有緩存。這個功能通過keep-alive組件實現(xiàn),keep-alive組件可以使被包含的組件保留狀態(tài),或避免重新渲染。

  在routes.js中定義路由,在路由中定義元信息(meta字段),需要緩存的頁面就需要在meta對象中定義一個字段,這里設(shè)置為keepAlive,設(shè)置為true,反之,則不緩存。

{
  path: '/a',
  component: () => import('@/pages/A'),
  meta: {
   title:'A',
   keepAlive: true
  }
},
{
  path: '/b',
  component: () => import('@/pages/B'),
  meta: {
   title:'B',
   keepAlive: true
  }
},
{
  path: '/c',
  component: () => import('@/pages/C'),
  meta: {
   title:'C',
   keepAlive: true
  }
}

  然后修改App.vue頁面

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

  這樣就可以實現(xiàn)有目的的對頁面進(jìn)行緩存了。

  但如果這時要實現(xiàn)從A頁面進(jìn)入B頁面后,讓A頁面不緩存的話我們還需要搭配上路由鉤子函數(shù)beforeRouteLeave()。

在A頁面中這樣寫:

beforeRouteLeave(to, from, next) {
    // 設(shè)置下一個路由的 meta
    if(to.meta.title=="B"){
      from.meta.keepAlive = false; // 讓B不緩存,即刷新
    }
    next();
}

  用到keep-Alive,遇到的最多的一個問題就是怎么去掉這種緩存狀態(tài)。就比如用戶每一次進(jìn)行新流程的操作的時候,這個時候頁面還是緩存是不對的。

  就比如,一個用戶登錄之后在某個緩存的頁面上填了信息,如果這個用戶注銷了之后,按道理,這些信息是應(yīng)該消失的,即恢復(fù)初始狀態(tài),但是這個時候不關(guān)閉頁面標(biāo)簽(因為新開標(biāo)簽的話會使所有頁面重新渲染),用戶再次登錄回去,還會發(fā)現(xiàn)之前的頁面還是存在緩存的,即這個頁面沒有重新渲染。如果想要解決這個問題的話,就要提到activated和deactivated這兩個特殊的生存周期函數(shù)了。但是需要注意的是,activated和deactivated這兩個生存周期函數(shù)只存在于keep-Alive組件中。當(dāng)一個keep-Alive組件緩存生效的時候,它不會觸發(fā)平常我們熟悉的created()和mounted()這類生存周期函數(shù),因此不會被重新渲染,所以,它的狀態(tài)得以保留。但是我們可以通過這兩個生存周期函數(shù)來更新頁面。

  先設(shè)置一個全局的標(biāo)志符,類型為布爾值,代表是否為緩存狀態(tài),你可以把它存進(jìn)vuex或者sessionStorage。(以下為存入sessionStorage為例)

  在用戶登錄成功的時候設(shè)置為sessionStorage.setItem("keepAlive",false);然后在緩存頁面中添加如下代碼:

activated:function(){
    if(sessionStorage.getItem("keepAlive")=='false'){
      //進(jìn)行初始化
    }else{
      //to do
    }
},

總結(jié)

到此這篇關(guān)于keep-Alive搭配vue-router實現(xiàn)緩存頁面效果的示例代碼的文章就介紹到這了,更多相關(guān)vue router實現(xiàn)緩存頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

沅江市| 瓦房店市| 南雄市| 景德镇市| 博乐市| 太和县| 龙江县| 涿鹿县| 安国市| 库伦旗| 财经| 叙永县| 桃江县| 逊克县| 丰台区| 永新县| 翁牛特旗| 云南省| 临澧县| 沙河市| 永胜县| 桂东县| 于田县| 茶陵县| 屯留县| 宝丰县| 陇川县| 凌源市| 秭归县| 腾冲县| 营口市| 连城县| 石泉县| 七台河市| 宣恩县| 大荔县| 海门市| 贵港市| 威信县| 乌鲁木齐县| 周宁县|