vue使用keep-alive后從部分頁(yè)面進(jìn)入不緩存示例詳解
需求:
1:當(dāng)前有頁(yè)面A-B-C三個(gè)板塊;
2:從頁(yè)面C返回頁(yè)面B時(shí),B頁(yè)面數(shù)據(jù)之前數(shù)據(jù)不會(huì)被清空(keep-alive),且C頁(yè)面攜帶到B頁(yè)面的數(shù)據(jù)緩存(event-bus/vuex);
3:從A-頁(yè)面進(jìn)入B頁(yè)面時(shí),B頁(yè)面為初始化狀態(tài)。
實(shí)現(xiàn):
1:借用路由鉤子函數(shù),在進(jìn)入B頁(yè)面時(shí),對(duì)當(dāng)前頁(yè)面進(jìn)行兼容處理;
修改router路由中配置項(xiàng)
配置meta屬性和isBack標(biāo)識(shí),判斷當(dāng)前頁(yè)面是從C頁(yè)面返回還是從其他頁(yè)面進(jìn)入,具體配置如下:
{
path: '/B',
name: 'B',
component: require('@/page/index.vue'),
meta: {
keepAlive: true, //當(dāng)前頁(yè)面是否緩存,搭配keep-alive使用
isBack: false // 判斷當(dāng)前頁(yè)面是從C頁(yè)面返回還是從其他頁(yè)面進(jìn)入,默認(rèn)從A頁(yè)面進(jìn)入
}
},
判斷當(dāng)前頁(yè)面是否需要緩存的頁(yè)面
再B頁(yè)面判斷當(dāng)前頁(yè)面跳轉(zhuǎn)方式,通過(guò)beforeRouteEnter(to, from, next),來(lái)判斷路由是從哪里來(lái)跳轉(zhuǎn)的,如果是從C跳轉(zhuǎn)的,則將當(dāng)前路由對(duì)象的meta.isBack設(shè)置為true,否則設(shè)為false。具體實(shí)現(xiàn)如下:
beforeRouteEnter(to, from, next) {
if (from.path == "/C") {
to.meta.isBack = true;
} else {
to.meta.isBack = false;
}
next();
},
不需要緩存頁(yè)面,重置B頁(yè)面數(shù)據(jù)
從非C頁(yè)面進(jìn)入B頁(yè)面時(shí),都應(yīng)重置當(dāng)前頁(yè)面數(shù)據(jù),所以需要在頁(yè)面加載之前(即activated),將之前獲取到的數(shù)據(jù)以及查詢條件清空。
activated()與deactivated()是兩個(gè)生命周期鉤子(生命周期函數(shù))。
activated()與deactivated()是路由組件所獨(dú)有的兩個(gè)生命周期鉤子,用于捕獲路由組件的激活狀態(tài)。
activated路由組件被激活時(shí)觸發(fā)。
deactivated路由組件失活時(shí)觸發(fā)。
activated() {
let that = this;
// 第一次和非C頁(yè)面進(jìn)入B頁(yè)面時(shí) isBack都為false,即需要重置數(shù)據(jù)
if (!this.route.meta.isBack) {
// 重置數(shù)據(jù)操作
}
this.route.meta.isBack = false;
},總結(jié)
到此這篇關(guān)于vue使用keep-alive后從部分頁(yè)面進(jìn)入不緩存的文章就介紹到這了,更多相關(guān)keep-alive部分頁(yè)面進(jìn)入不緩存內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中el-tab如何點(diǎn)擊不同標(biāo)簽觸發(fā)不同函數(shù)的實(shí)現(xiàn)
el-tab本身的功能是點(diǎn)擊之后切換不同頁(yè),本文主要介紹了vue中el-tab如何點(diǎn)擊不同標(biāo)簽觸發(fā)不同函數(shù)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03
vue打包后出現(xiàn)空白頁(yè)的原因及解決方式詳解
在項(xiàng)目中很多時(shí)候需要用到vue打包成html不需要放在服務(wù)器上就能瀏覽,根據(jù)官網(wǎng)打包出來(lái)的html直接打開(kāi)是顯示空白,下面這篇文章主要給大家介紹了關(guān)于vue打包后出現(xiàn)空白頁(yè)的原因及解決方式的相關(guān)資料,需要的朋友可以參考下2022-07-07
在Vue中用canvas實(shí)現(xiàn)二維碼和圖片合成海報(bào)的方法
這篇文章主要介紹了在Vue中用canvas實(shí)現(xiàn)二維碼和圖片合成海報(bào)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
vue?demi支持sfc方式的vue2vue3通用庫(kù)開(kāi)發(fā)詳解
這篇文章主要為大家介紹了vue?demi支持sfc方式的vue2vue3通用庫(kù)開(kāi)發(fā)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁(yè)面顯示的操作
這篇文章主要介紹了vue+element使用動(dòng)態(tài)加載路由方式實(shí)現(xiàn)三級(jí)菜單頁(yè)面顯示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08

