keep-alive include exclude 不生效的原因
⚠️ keepalive的include和exclude里面所需要的name是组件的name 并不是路由的name
⚠️如果组件内没有name 需要手动添加才会生效
⚠️如果使用逗号分隔 name 需要在name前面添加空格
版本vue2.0可以直接写name
版本为vue3.0并且使用了<script setup>需要再添加一个<script>并且添加上name
版本为vue3.2并且使用了<script setup>无需手动添加name,name会自动根据文件名生成
tips:可以使用actived和deactived两个生命周期去判断组件是否被缓存了 如果缓存了会调用actived
路由🌰
//方式1 - 数组
<router-view v-slot="{ Component }">
<keep-alive :exclude="[demo,demo2]">
<component :is="Component" />
</keep-alive>
</router-view>
//方式2 -字符串
<router-view v-slot="{ Component }">
<KeepAlive include="demo, demo2">
<component :is="Component" />
</KeepAlive>
</router-view>
//方式3 -正则
<router-view v-slot="{ Component }">
<KeepAlive :include="/demo|demo2/">
<component :is="Component" />
</KeepAlive>
</router-view>
2.0 组件demo:
<script>
export default {
name:demo
}
</script>
3.0 组件demo
<script>
export default{name:demo}
</script>
<script setup>
</script>
特别注意:import 需要写在顶层script
