0%

Vue3 缓存页面

Vue3 缓存页面

vue3 使用 keep-alive 缓存列表类页面

我们平时在开发中都会遇到列表类型的组件,不管是pc的查询,分页,还是手机端的分页,滚动位置,这类列表还经常有对应的详情页,我们希望用户进入详情页之后返回列表页时,能够展示进入详情页之前的状态,此时就要用的vue-router的keep-alive组件了

因为我们不需要缓存所有页面,比方说详情页,那我们就需要一个配置来区分哪个页面是需要缓存的,这里我们采用在 router 的 meta 信息里加上标志位的方式区分

在 router.js 中为需要缓存的组件增加 keepAlive: true

1
2
3
4
5
6
7
8
9
10
{
path: '/services',
component: Services,
meta: {
title: '服务列表',
requireAuth: false,
keepAlive: true
},
children: []
}

在vue2中 我们可以使用下面的方式

1
2
3
4
<keep-alive>
<router-view v-if="$route.meta.keepAlive"></router-view>
</keep-alive>
<router-view v-if="!$route.meta.keepAlive"></router-view>

在vue3中

1
2
3
4
5
6
7
8
9
10
<router-view v-slot="{ Component, route }">
<keep-alive>
<component
v-if="route.meta.keepAlive"
:is="Component"
:key="route.path"
/>
</keep-alive>
<component v-if="!route.meta.keepAlive" :is="Component" />
</router-view>