v-for和v-if

有时在使用 vs code 编辑器里是 eslint 插件时一直会有一个报错:大致的意思就是不建议 v-if 和 v-for 一起使用

根据 eslint 指出的方法进行改进
第一种:将 v-if 和 v-for 分别放在不同标签中

<ul v-if="active">
	<li v-for="item in list" :key="item.id">
		{{ item.title }}
	</li>
</ul>

第二种:如果 v-if 和 v-for 只能放在同一级标签中,使用计算属性进行改造:

<ul>
  <li
    v-for="user in users"
    v-if="user.isActive"
    :key="user.id"
  >
    {{ user.name }}
  </li>
</ul>

将会经过如下运算:

this.users.map(function (user) {
  if (user.isActive) {
    return user.name
  }
})

这是因为当它们处于同一节点, v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。

通过将其更换为在如下的一个计算属性上遍历

computed: {
  activeUsers: function () {
    return this.users.filter(function (user) {
      return user.isActive
    })
  }
}
<ul>
  <li
    v-for="user in activeUsers"
    :key="user.id"
  >
    {{ user.name }}
  </li>
</ul>

经过测试,以上两种方法都可以解决 eslint 的报错。

原文链接:https://blog.csdn.net/LonewoIf/article/details/86686918
原文链接:https://www.cnblogs.com/gitByLegend/p/10837777.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值