背景
用 vue3 开发一个移动端项目,有个需求是,有一个 tab 人员列表页,点击其中的某个人名,可以跳转到该人员的详情页。为了优化体验,我使用了 keepAlive 来缓存人员列表页,这样在跳转详情页后,再返回人员列表页,不需要重新请求接口,直接从缓存中读取数据。
但是,偶尔会出现缓存失效的问题,导致返回人员列表页后,需要重新请求接口。
1、首先从 keepAlive 的缓存配置入手
<!-- App.vue文件 -->
<template>
<vanConfigProvider :theme="getDarkMode" :theme-vars="getThemeVars()" theme-vars-scope="global">
<routerView v-slot="{ Component }">
<div class="absolute top-0 bottom-0 w-full overflow-hidden">
<transition :name="getTransitionName" mode="out-in" appear>
<!-- include后跟的变量用来存放需要缓存的组件name -->
<keep-alive v-if="keepAliveComponents" :include="keepAliveComponents">
<!-- 下边component中,不能设置key,否则会导致缓存失效 -->
<component :is="Component" />
</keep-alive>
</transition>
</div>
</routerView>
</vanConfigProvider>
</template>