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

相关推荐
EF@蛐蛐堂21 分钟前
WUJIE VS QIANKUN 微前端框架选型(一)
前端·vue.js·微服务·架构
咚咚咚小柒28 分钟前
【前端】用el-popover做通用悬停气泡(可设置弹框宽度)
前端·javascript·vue.js·elementui·html·scss
JAVA学习通1 小时前
OJ竞赛平台----C端题目列表
java·开发语言·jvm·vue.js·elasticsearch
麦麦大数据2 小时前
F025 基于知识图谱图书可视推荐系统 vue+flask+neo4j | python编写、知识图谱可视化+推荐系统
vue.js·python·知识图谱·推荐算法·协同过滤·图书推荐
古一|3 小时前
vue3都有哪些升级相比vue2-核心响应式系统重构
javascript·vue.js·重构
ruanCat4 小时前
记一次因 vue-router 升级而导致的 uniapp 故障
前端·vue.js
我叫黑大帅4 小时前
面对组件的不听话,我还是用了它…………
前端·javascript·vue.js
chéng ௹4 小时前
Vue3+Ts+Element Plus 权限菜单控制节点
前端·javascript·vue.js·typescript
weixin-a153003083167 小时前
vue疑难解答
前端·javascript·vue.js
nueroamazing17 小时前
PPT-EA:PPT自动生成器
vue.js·python·语言模型·flask·大模型·项目·ppt