vue3实现keep-alive一个组件(一个vue使用多个页面支持缓存)使用多个页面(多个路由)已解决

代码

<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);
  }
}
复制代码

 

posted @   韦邦杠  阅读(185)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
历史上的今天:
2018-11-28 Spring mvc实现ex导入导出
2018-11-28 java中io创建文件和读取文件
2018-11-28 io流
2018-11-28 字符流和字节流的区别
2018-11-28 spring异常+自定义以及使用
2018-11-28 @Controller和@RestController的区别?
2018-11-28 spring 跨域 CORS (Cross Origin Resources Share) 跨域
点击右上角即可分享
微信分享提示