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

相关推荐
橙某人5 小时前
LogicFlow 小地图性能优化:从「实时克隆」到「占位缩略块」!🚀
前端·javascript·vue.js
boooooooom6 小时前
讲清 Proxy + effect + track/trigger 流程
javascript·vue.js·面试
leafyyuki6 小时前
在 Vue 项目中玩转 FullCalendar:从零搭建可交互的事件日历
前端·javascript·vue.js
星_离7 小时前
《Vue 自定义指令注册技巧:从手动到自动,效率翻倍》
前端·vue.js
光影少年7 小时前
Vue的响应式原理?Vue2和Vue3有什么区别?
前端·vue.js·掘金·金石计划
wuhen_n9 小时前
v-model 的进阶用法:搞定复杂的父子组件数据通信
前端·javascript·vue.js
wuhen_n9 小时前
TypeScript 深度加持:让你的组合式函数拥有“钢筋铁骨”
前端·javascript·vue.js
滕青山9 小时前
基于 ZXing 的 Vue 在线二维码扫描器实现
前端·javascript·vue.js
踩着两条虫10 小时前
AI 驱动的 Vue3 应用开发平台 入门指南(五):创建 H5 移动应用
前端·vue.js·ai编程
踩着两条虫10 小时前
AI 驱动的 Vue3 应用开发平台 入门指南(二):快速入门
前端·vue.js·ai编程