v-for和v-if

China☆狼群 提交于 2020-03-17 15:31:13

有时在使用 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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!