代码 template 段
<template>
<router-view>
<template #default="{ Component, route }">
<keep-alive>
<component :is="Component" v-if="route.meta.keepAlive" :key="route.meta?.key"/>
</keep-alive>
<component :is="Component" v-if="!route.meta.keepAlive" :key="route.fullPath"/>
</template>
</router-view>
</template>
vue.js 段
import { RouteRecordRaw } from 'vue-router'
import { PageEnum } from '@/enums/pageEnum'
const importPath = {
'PageEnum.BASE_HOME_NAME': () => import('@/views/project/index.vue'),
'PageEnum.BASE_HOME_ITEMS_NAME': () => import('@/views/project/items/index.vue'),
'PageEnum.BASE_HOME_TEMPLATE_NAME': () => import('@/views/project/mtTemplate/index.vue'),
'PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME': () => import('@/views/project/templateMarket/index.vue')
}
const projectRoutes: RouteRecordRaw = {
path: PageEnum.BASE_HOME,
name: PageEnum.BASE_HOME_NAME,
component: importPath['PageEnum.BASE_HOME_NAME'],
redirect: PageEnum.BASE_HOME_ITEMS,
meta: {
title: '项目',
isRoot: true
},
children: [
{
path: PageEnum.BASE_HOME_ITEMS,
name: PageEnum.BASE_HOME_ITEMS_NAME,
component: importPath['PageEnum.BASE_HOME_ITEMS_NAME'],
meta: {
title: '我的项目',
keepAlive:false
}
},
{
path: PageEnum.BASE_HOME_TEMPLATE,
name: PageEnum.BASE_HOME_TEMPLATE_NAME,
component: importPath['PageEnum.BASE_HOME_TEMPLATE_NAME'],
meta: {
title: '我的模板',
keepAlive: true
}
},
{
path: PageEnum.BASE_HOME_TEMPLATE_MARKET,
name: PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME,
component: importPath['PageEnum.BASE_HOME_TEMPLATE_MARKET_NAME'],
meta: {
title: '模板市场'
}
}
]
}
projectRoutes.children?.forEach(child => {
child.meta = {
...child.meta,
key: 'reuse-project'
}
})
export default projectRoutes