代码
<router-view v-if="routerAlive">
<template #default="{ Component, route }">
<keep-alive :include="getCaches">
<component :is="formatComponentInstance(Component,route.name)" :key="route.name"/>
</keep-alive>
</template>
</router-view>
js方法
// 用来存已经创建的组件
const wrapperMap = new Map();
// 将router传个我们的组件重新换一个新的组件,原组件包里面
function formatComponentInstance(component, fullPath) {
let wrapper;
if (component) {
const wrapperName = fullPath;
if (wrapperMap.has(wrapperName)) {
wrapper = wrapperMap.get(wrapperName);
} else {
wrapper = {
name: wrapperName,
render() {
return h(component);
},
};
wrapperMap.set(wrapperName, wrapper);
}
return h(wrapper);
}
}