問題描述:
需要對頁面A進行緩存,保證從二級頁面B返回可以保留原狀態。頁面A開啟了keepAlive:true;頁面B沒有開啟keepAlive;頁面A跳轉到頁面B,再從頁面B返回頁面A,頁面A緩存失效。
代碼:
1、router.js在路由的meta中設置keepAlive
meta: {
keepAlive: true
}
2、App.vue設置路由是否被緩存
<template>
<div id="app">
<keep-alive v-if="$route.meta.keepAlive">
<router-view></router-view
></keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
這時候從頁面A調到沒有設置keepAlive的頁面B,再回到頁面A,頁面A緩存失效。
嘗試解決:A頁面beforeRouteEnter,設置keepAlive,失敗!
beforeRouteEnter(to,form,next){
to.meta.keepAlive = true;
next();
}
n久之后,發現了問題,App.vue配置路由展示的寫法不正確,v-if需要寫在<router-view />,寫在<keep-alive />會導致設置了keepAlive的頁面緩存失效
開始改代碼:
<template>
<div id="app">
<keep-alive >
<router-view v-if="$route.meta.keepAlive"></router-view
></keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>
</div>
</template>
解決!
參(非)考(常)來(感)自(謝):
https://blog.csdn.net/a3335581/article/details/88388303
