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

相关推荐
专业程序开发源12 小时前
springboot简历管理系统81389-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·php·课程设计
专业程序开发源12 小时前
springboot社区养老系统44071-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·php·课程设计
码艺-Alimjan13 小时前
Vben Admin 新增维吾尔语 Vben-Modal的关键坑之一
前端·javascript·vue.js
星光开发者14 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
vx_Biye_Design15 小时前
springboot高校选课系统82776-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·spring·课程设计·express
niyongsheng15 小时前
后端零改动,给若依换一套现代化前端
vue.js·开源·node.js
用户91775337187517 小时前
从零封装一个地图组件库:OpenLayers + Vue 的工程化实践
vue.js
雪芽蓝域zzs19 小时前
第7节:多选模式、自定义选项渲染、受控弹窗显隐
vue.js·elementui
acd1200920 小时前
前端随笔:数据明明变了,Vue 页面就是不更新
前端·javascript·vue.js
vx_Biye_Design20 小时前
springboot一站式旅游管理平台81037-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·课程设计·express·旅游