解决v-for和v-if一起使用编辑器报错

在Vue中,v-for和v-if同时使用时,官方推荐优先级v-for高于v-if(在Vue2.x),而在Vue3.x中情况相反。为了避免性能问题和遵循最佳实践,应尽量避免在同一元素上同时使用这两个指令。文章中提到的错误提示建议使用计算属性来过滤数组,而不是在v-for内使用v-if。为解决这个问题,可以将v-for放在template标签上,v-if则放在循环元素内部。
摘要由CSDN通过智能技术生成

查找资料

  • 官方解释:当它们处于同一节点时,v-for的优先级比v-if更高,这意味着v-if将分别重复运用于每个v-for循环中。当你只想要为部分项渲染节点时,这种优先级的机制会十分有用。
  • 翻译一下:v-for和v-if一起使用时,会先执行v-for再执行v-if。
  • vue2.x中v-for优先级高于v-if,vue3.x相反。
  • 尽量避免在同一个元素上面同时使用v-if和v-for,建议使用计算属性替代。

在Vue中使用v-for循环一个数组/对象时,如果再使用v-if,那么会提示使用计算属性(能正常使用),因为Vue中事不提倡v-for与v-if同时使用的。

<el-tag
	v-for="(item, index) in tagsObj.selectedTags"
   	v-if="label==(item.protocolId)||label==(item.productId)"
   	size="medium"
   	closable
   	:key="item.id"
   	@close="deleteTag(item, index)">
</el-tag>

编辑器报错提示:

[vue/no-use-v-if-with-v-for] The ‘tagsObj.selectedTags’ expression inside ‘v-for’ directive should be replaced with a computed property that returns filtered array instead. You should not mix ‘v-for’ with ‘v-if’.eslint-plugin-vue

修改:用template标签包裹,v-for写在template上,v-if绑定在需要循环的元素上。

<template v-for="(item, index) in tagsObj.selectedTags">
	<el-tag
	   	v-if="label==(item.protocolId)||label==(item.productId)"
	   	size="medium"
	   	closable
	   	:key="item.id"
	   	@close="deleteTag(item, index)">
	</el-tag>
</template>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值