av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:143日期:2023-01-11 13:49:36

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

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

<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)有目的的對頁面進(jìn)行緩存了。

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

在A頁面中這樣寫:

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

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

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

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

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

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

總結(jié)

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

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 亚洲色图图片 | 欧美黄a | 欧美日韩国产一区二区三区 | 性高湖久久久久久久久aaaaa | 国产精品久久久久久 | 一级黄在线观看 | 亚洲日本乱码在线观看 | 久久精品国产一区 | 国产在线精品一区二区 | 色爱综合网 | 亚洲一区成人 | 国产日韩一区二区三免费高清 | 一级a爱片性色毛片免费 | 在线观看成人小视频 | 久久99精品久久久久 | 风间由美一区二区三区在线观看 | 电影91久久久 | 国产欧美精品一区二区 | 日韩一区在线观看视频 | 91精品国产高清久久久久久久久 | 中文字幕一区在线观看视频 | 午夜精品久久久久久久久久久久久 | 日韩在线视频一区 | 亚洲精品在| 亚洲最大的成人网 | 黄色免费网 | 91视频国产一区 | 欧美a级网站 | 九九热在线视频 | 999观看免费高清www | 欧美888 | 一区欧美 | 色毛片| 免费黄色日本 | 一区二区三区日本 | 国产精品大片在线观看 | 97国产精品| 成人在线播放网址 | 久久久亚洲一区 | 日韩在线资源 | 亚洲欧美日韩一区二区 |