Vue3 多路由指向同一组件 实现keep-alive缓存页面的解决

Vue3 多路由指向同一组件 实现keep-alive缓存页面的解决

因为写了自制tab页面,需要实现关闭tab页面时清除缓存,切换tab页面时不清除缓存,新增和编辑复用了同一个页面

vue3写法路由:

js 复制代码
<router-view v-slot="{ Component }">
      <div class="app_container">
        <transition name="fade-transform" mode="out-in">
          <keep-alive :exclude="tagList().excludeList"> //tagList().excludeList是仓库全局数据,当删除页面标签时加上,有tab页面时去掉
            <component
              ref="myComponent"
              :is="wrap($route.name, Component)"
              :key="$route.name"
            />
          </keep-alive>
        </transition>
      </div>
    </router-view>

因为同一个页面的name是相同的

defineOptions({

name: "edit",

});

我们需要用路由名称来定义组件名称

js 复制代码
const wrapperMap = new Map();
const wrap = (name, component) => {
  let wrapper;
  const wrapperName = name;
  if (wrapperMap.has(wrapperName)) {
    wrapper = wrapperMap.get(wrapperName);
  } else {
    wrapper = {
      name: wrapperName,
      render() {
        return h("div", {}, component);
      },
    };
    wrapperMap.set(wrapperName, wrapper);
  }
  return h(wrapper);
};

cankao

参考:http://www.cppcns.com/wangluo/javascript/512982.html

相关推荐
90后的晨仔12 小时前
从 H5 到 uni-app:一篇写给前端小白的"翻译指南"
前端·vue.js·前端框架
java1234_小锋17 小时前
Vue3+Vite简介以及构建第一个HelloWorld实例
前端·javascript·vue.js·vite
西门啐血19 小时前
Vue 缓存之坑,变量赋值方式和响应式数据
前端·vue.js·缓存
观察员19 小时前
Vue3 猜字游戏前端实战:从零搭建聊天交互界面
vue.js
春波petal1 天前
Vue3防抖搜索:从Lodash到customRef全解析
vue.js·vue3·防抖搜索
达子6661 天前
第22章_HarmonyOs开发图解之 蓝牙
vue.js
无人生还1 天前
从 Vue3 到 React · 快速上手系列第 9 篇:自定义 Hook(对标 Composables)
前端·vue.js·react.js
别怪我很水1 天前
Vue element admin 浏览器本地存储 localStorage、useStorage
前端·javascript·vue.js
猫猫不是喵喵.2 天前
Vue3 Props 属性
前端·javascript·vue.js
小罗水2 天前
第17章 后台管理端与演示支持
javascript·vue.js·ecmascript