美文网首页
v-if 与 v-for 一起使用

v-if 与 v-for 一起使用

作者: 瓩千瓦 | 来源:发表于2021-08-06 15:00 被阅读0次

    当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级,这意味着 v-if 将分别重复运行于每个 v-for 循环中

    所以,不推荐v-if和v-for同时使用

    使用推荐方式:

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

    或者:放在计算属性遍历

    computed: {
        sprintStatusfilter() {
          return this.sprintPlanList.filter(function (item) {
            return item.sprintStatus != 3
          })
        }
      }
    
    <ul>
      <li
        v-for="user in sprintStatusfilter"
        :key="user.id">
        {{ user.name }}
      </li>
    </ul>
    

    当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。当你想为仅有的一些项渲染节点时,这种优先级的机制会十分有用,如下:

    <li v-for="todo in todos" v-if="!todo.isComplete">
      {{ todo }}
    </li>
    

    上面的代码只传递了未完成的 todos。

    而如果你的目的是有条件地跳过循环的执行,那么可以将 v-if 置于外层元素 (或 [<template>]上。如:

    <ul v-if="todos.length">
      <li v-for="todo in todos">
      {{ todo }}
      </li>
    </ul>
    <p v-else>No todos left!</p>
    

    版权声明:本文为CSDN博主「疯三年」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/namechenfl/article/details/83987488

    相关文章

      网友评论

          本文标题:v-if 与 v-for 一起使用

          本文链接:https://www.haomeiwen.com/subject/ovobvltx.html