使用动态组件tabs.打开新的tab页之前的tab页都会重新发起请求

本文针对Element UI中Tabs组件在Vue项目中的使用问题进行探讨。当需要实现固定首页和菜单栏并支持动态添加Tab页时,点击Tab会导致所有页面重新渲染及不必要的请求发起。通过结合v-if和keep-alive特性,可以有效避免重复加载,提高用户体验。

vue项目踩坑-使用动态组件tabs.打开新的tab页之前的tab页都会重新发起请求

element-ui中的tabs每次点击时都会给所有页面重新渲染。
项目要求是首页和菜单栏是固定的,菜单每点一个多出一个tab页

  <el-tabs
      v-model="activeName"
      @tab-click="handleClick"
      @tab-remove="removeTab"
    >
      <el-tab-pane label="首页" name="home">//固定的首页
        <Home />
      </el-tab-pane>
      <el-tab-pane label="全部功能" name="config">//固定的全部功能页
        <div class="config">
          <Config @changeActiveName="changeActiveName" />
        </div>
      </el-tab-pane>
      <!-- 动态增加的标签页 -->
      <el-tab-pane
        closable
        v-for="menu in componentMenuArr"
        :label="menu.Name"
        :key="menu.Name + '&' + menu.Index"
        :name="menu.Name + '&' + menu.Index"
      >
        <keep-alive>
          <component
            v-if="menu.Name + '&' + menu.Index === activeName"//v-if让之前的tab页不再重新加载
            :is="componentName"
            :funcId="menu.Id"
            :activeName="activeName"
            :fullName="menu.Name + '&' + menu.Index"
            :comCode="menu.Code"
            :comIndex="menu.Index"
            :comName="menu.Name"
            @changeActiveName="changeActiveName"
          ></component>
        </keep-alive>
      </el-tab-pane>
    </el-tabs>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值