这里写目录标题
1. vue3动态路由写法
<template>
<router-view #default="{Component}">
<keep-alive :include="keepAliveList">
<component :is="Component"></component>
</keep-alive>
</router-view>
</template>
<script lang="ts" setup>
//pinia中存储的keepAliveList列表. 内部存储着路由组件的name属性
import {useUser} from "@/store/usekeepAlive"
import {computed} from "vue"
const userStore = useUser()
//需要缓存组件的列表
const keepAliveList = computed(()=>{
return userStore.keepAliveList
})
</script>
2. 添加组件的name
keep-alive的include列表中是需要与组件的name属性对应才能缓存, 如果使用vue3的setup语法糖格式, 则一下两种方式
- 方法一: 两个script标签, 其中一个写成vue2的形式, 专门用来写name
- 方法二: 使用vite插件vite-plugin-vue-setup-extend
方法1:
<script>
export default {
name:"组件名"
}
</script>
<script lang="ts" setup>
</script>
方法2:
//安装
npm i vite-plugin-vue-setup-extend@0.4.0 -D
//配置vite.config.ts
import { defineConfig } from 'vite'
import VueSetupExtend from 'vite-plugin-vue-setup-extend'
export default defineConfig({
plugins: [ VueSetupExtend() ]
})
//使用
<script lang="ts" setup name="from">
</script>