当v-if和v-for需要同时使用的时候

本文介绍了在 Vue 中如何优化 v-for 指令的使用,以避免性能浪费。错误的做法是在 v-for 循环中同时使用 v-if,这会导致每次循环都进行条件判断。正确的解决方案是利用 computed 属性筛选需要显示的列表,如 `activeItemList`,然后在模板中使用这个计算属性。这样可以提高渲染效率。

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

当使用v-for的时候需要选择性地隐藏部分item
本来的错误写法是这样:

 <div class="card-view-item" v-for="(item,index) in cardList" :key="index" v-if="item.show"> </div>

在data里声明的cardList

  cardList:[
        {
          title:'夜间睡眠',
          time:'12/1',
          show:true,
        },
        {
          title:'步数和热量',
          time:'12/1',
          show:false,
        },
      ]

以上的那种用法是错误的。v-for的优先级是高于v-if的,如果两者同时使用,那么v-if会在每一个v-for循环渲染出来的项上作用,造成性能上的浪费。

下面是正确用法:
我们可以利用computed:

computed: {
	activeItemList: function() {
		return this.cardList.filter((item) => {
			return item.show
		})
	}
}

 <div class="card-view-item" v-for="(item,index) in activeItemList" :key="index" > </div>

这样就可以了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一粒程序米

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值