欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

  在routes.js中定義路由,在路由中定義元信息(meta字段),需要緩存的頁(yè)面就需要在meta對(duì)象中定義一個(gè)字段,這里設(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頁(yè)面

<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>

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

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

在A頁(yè)面中這樣寫(xiě):

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

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • vue+element導(dǎo)航欄高亮顯示的解決方式

    vue+element導(dǎo)航欄高亮顯示的解決方式

    今天小編就為大家分享一篇vue+element導(dǎo)航欄高亮顯示的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Vue可自定義tab組件用法實(shí)例

    Vue可自定義tab組件用法實(shí)例

    在本篇文章里小編給大家分享了關(guān)于Vue可自定義tab組件用法實(shí)例以及相關(guān)知識(shí)點(diǎn),需要的朋友們參考下。
    2019-10-10
  • 詳解vue+vuex+koa2開(kāi)發(fā)環(huán)境搭建及示例開(kāi)發(fā)

    詳解vue+vuex+koa2開(kāi)發(fā)環(huán)境搭建及示例開(kāi)發(fā)

    本篇文章主要介紹了詳解vue + vuex + koa2開(kāi)發(fā)環(huán)境搭建及示例開(kāi)發(fā),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • .html頁(yè)面引入vue并使用公共組件方式

    .html頁(yè)面引入vue并使用公共組件方式

    這篇文章主要介紹了.html頁(yè)面引入vue并使用公共組件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue實(shí)現(xiàn)簡(jiǎn)單瀑布流布局

    vue實(shí)現(xiàn)簡(jiǎn)單瀑布流布局

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)簡(jiǎn)單瀑布流布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • vue+高德地圖寫(xiě)地圖選址組件的方法

    vue+高德地圖寫(xiě)地圖選址組件的方法

    這篇文章主要介紹了vue+高德地圖寫(xiě)地圖選址組件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • vue使用mint-ui實(shí)現(xiàn)下拉刷新和無(wú)限滾動(dòng)的示例代碼

    vue使用mint-ui實(shí)現(xiàn)下拉刷新和無(wú)限滾動(dòng)的示例代碼

    本篇文章主要介紹了vue使用mint-ui實(shí)現(xiàn)下拉刷新和無(wú)限滾動(dòng)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 如何在ElementUI的上傳組件el-upload中設(shè)置header

    如何在ElementUI的上傳組件el-upload中設(shè)置header

    這篇文章主要介紹了如何在ElementUI的上傳組件el-upload中設(shè)置header,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • element-ui之解決select無(wú)法回顯的問(wèn)題

    element-ui之解決select無(wú)法回顯的問(wèn)題

    這篇文章主要介紹了element-ui之解決select無(wú)法回顯的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 關(guān)于vue2響應(yīng)式缺陷的問(wèn)題

    關(guān)于vue2響應(yīng)式缺陷的問(wèn)題

    這篇文章主要介紹了關(guān)于vue2響應(yīng)式缺陷的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評(píng)論