源码能够参考 https://github.com/ohoherror/...

在写公共layout时,应用el-tabs,切换菜单,应用keep-alive不能做到缓存

  <el-row>        <el-col :span="24">            <el-button @click="loginOut" class="float-right mb-10 ">退出</el-button>        </el-col>        <el-col :span="24">            <el-tabs @tab-click="handleClick" v-model="editableTabsValue" closable type="card" class="demo-tabs"                @tab-remove="removeTab">                <el-tab-pane v-for="item in editableTabs" :key="item.menuId" :label="item.name" :name="item.name">                    <router-view v-slot="{ Component, route }">                        <keep-alive>                            <component :is="Component" v-if="(route.meta && route.meta.keepAlive)" :key="router.name" />                        </keep-alive>                        <component :is="Component" :key="router.name" v-if="!(route.meta && route.meta.keepAlive)" />                    </router-view>                </el-tab-pane>            </el-tabs>        </el-col>    </el-row>

起初把keep-alive放在app.vue外面就能够做到缓存了

 <div id="app">    <!-- 路由进口 -->    <!-- 路由匹配到的组件将渲染在这里 -->    <div>      <el-container>        <el-aside width="200px" v-if="state.showMenu">          <leftNav></leftNav>        </el-aside>        <el-container>          <el-header v-if="state.showMenu">            <topNav></topNav>          </el-header>          <el-main class="mt-20">            <router-view v-slot="{ Component, route }">              <keep-alive>                <component :is="Component" v-if="(route.meta && route.meta.keepAlive)" :key="router.name" />              </keep-alive>              <component :is="Component" :key="router.name" v-if="!(route.meta && route.meta.keepAlive)" />            </router-view>          </el-main>        </el-container>      </el-container>    </div>  </div>