VUE,element-ui,优化tabs组件每次点击,所有子页面都重新渲染问题。

本文介绍了如何优化Vue和Element-UI中的Tabs组件,避免每次切换Tab时所有子页面重新渲染,从而节省网络资源。通过使用v-if实现惰性加载,减少代码冗余,提升性能。文章详细展示了从第一版到第三版的优化过程,包括数据处理、代码简化和子组件渲染的改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在element-ui的tabs组件中,我们发现每次切换页面,所有的子组件都会重新渲染一次。当子页面需要发送数据请求并且子页面过多时,这样会过多的占用网络资源。这里我们可以使用v-if来进行判断是否渲染该子页面。
不会如何在父页面载入子页面的可用看这一篇文章:在父页面引入子页面文件

v-if属于惰性加载,当值为false的时候,就不会加载。

这个办法是自己研究出来的一个方法,应该还有改善的空间,
本人在不断的优化代码,在发现了更简短的代码之后会在下面更新,已经更新到第三版。

需要使用的可直接看最后一个版本,如果想要学习交流的可用从上往下看。

第一版本:

1.在data中定义每个子组件相应的值,ture为加载,false为不加载。
在这里插入图片描述2.在子组件中使用v-if来判断是否渲染当前页面
在这里插入图片描述3.在函数中对子组件的值进行切换。

handleClick(tab) {
   
      switch (tab.name) {
   
        case "first":
          this.pageOne = true;
          this.pageTwo = false;
          this.pageThree = false;
          break;
        case "second":
          this.pageOne = false;
          this.pageTwo = true;
          this.pageThree = false;
          break;
        case "third":
          this.pageOne = false;
          this.pageTwo = false;
          this.pageThree = true;
          break;

        default:
          break;
      }

使用switch来判断tab的name值,并且对不同情况做出不同的判断。
但是这对于子页面过多的情况来说实在是太麻烦了。所以研发出第二版~

第二版:解决handleClick(tab)代码冗余

1.这一次定义一个数组,将子页面的值都放在里面,用来判断该页面是否需要渲染

data() {
   
    return {
   
      activeName: "allOrder",
      pages: {
   
        allOrder: true,//第一个需要渲染的页面
        unpaid: false,
        wangtingList: false,
        wangtingService: false,
        unCheck: false,
        finish: false,
        stayAway: false,
      },
    };
  },

2.在子页面组件中使用v-if判断是否渲染

 <el-tab-pane label="所有订单" name="allOrder">
     <allOrder v-if="pages.allOrder"></allOrder>
  </el-tab-pane>

3.定义切换组件时࿰

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值