vue3实现缓存指定路由页面

65 阅读1分钟

1、用KeepAlive缓存路由对应组件

<RouterView v-slot="{ Component }">
    <!-- 缓存指定路由 -->
    <KeepAlive include="home">
      <component :is="Component"></component>
    </KeepAlive>
</RouterView>

ps:

①可通过include缓存指定的路由组件,具体规则可参阅官方文档:KeepAlive

②“home”是组件的name,不是router里配置的路由name

③这里缓存的是当前路由对应的组件,如缓存home页面,缓存的是:

image.png

2、定义组件名称

要实现缓存指定的路由页面,就需要为页面对应的组件定义名称,如上面需要指定缓存home页面,就需要将页面对应的组件名称定义为“home”。

vue3组件名称定义有多种方式可以实现:

①默认方式:在 3.2.34 或以上的版本中,使用 setup 的单文件组件会自动根据文件名生成对应的 name 选项,无需再手动声明。

②安装插件: unplugin-vue-setup-extend-plus,使用该插件可以直接在script标签使用name字段命名,如:

<script setup name="home" lang="ts">

③官方原生API:defineOptions,无需插件,Vue3.3版本后原生支持

<script setup>
    defineOptions({ 
        name: 'home' 
    })
</script>