VUE全家桶项目实战-- 5.标签页的组件缓存/删除缓存和退出登录

一.标签页的优化

​ 功能实现为:点击菜单,添加标签,同时缓存组件页面内容,点击不同的标签,组件会记录之前的内容,页面记录不会更改,删除标签,则不会缓存组件内容,下一次再点击菜单是,组件内容为NULL

1.vue 代码

<!-- 内容区域 -->
 <!--
	@tab-remove:标签删除
	@tab-click:标签点击-->
      <el-main>
        <div class="tabs">
          <el-tabs
            v-model="editableTabsValue"
            type="card"
            closable
            @tab-remove="removeTab"
            
            @tab-click="skipTab"
          >
            <el-tab-pane
              v-for="(item) in editableTabs"
              :key="item.name"
              :label="item.title"
              :name="item.name"
            ></el-tab-pane>
          </el-tabs>
        </div>
          <!-- include 只有名称匹配的组件会被缓存
				添加标签,组件缓存
				删除标签,删除组件缓存
				操作数组中的组件名称就可以了
				可以做到添加标签的时候缓存组件内容,删除标签,不缓存组件内容,再点击菜单,页面为空白
				-->
        <keep-alive :include="keepAlives">
          <router-view></router-view>
        </keep-alive>
      </el-main>

2.组件名称为各个组件的name对应的值

//该组件中名称为 user
export default {
   
  name:'user',
  data() {
   }
}

3.添加删除标签的js 代码

//导航栏的菜单添加标签
<el-menu-item index="/charge" @click="addTab('充电','charge')">充电</el-menu-item>

export default {
   
  data() {
   
    return {
   
      editableTabsValue: "",
        //需要缓存组件的数组,包含的是字符串
      keepAlives: ["welcome"],
      editableTabs: [
        {
   
          title: "首页",
          name: "welcome"
        }
      ],
    };
  },
  methods: {
   
      //添加标签
    addTab(title, name) {
   
       
      const length = this.editableTabs.length;
        //如果标签数组为0,直接添加标签数组
      if (length == 0) {
   
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值