如何在vue.js中的v-for循环中使用v-if 2

hvvq6cgz  于 2023-06-24  发布在  Vue.js
关注(0)|答案(1)|浏览(175)

我有这个代码设置

<div v-for="person in persons">
    <div v-if="person.status == 'public'" :key="person.id">
        Hi,my name is {{person.name}}
    </div>
    <div v-else :key="person.id">
        This person is private
    </div>
</div>

person对象中status属性的所有值都是'public',all!
但是在上面的代码片段中,不是要运行的if块,而是else块继续运行。
如果我像这样重写代码:

<div v-for="person in persons" :key="person.id">
    <div v-if="person.status == 'public'">
        Hi,my name is {{person.name}}
    </div>
    <div v-else>
        This person is private
    </div>
</div>

那么它就能正常工作。
第一个片段有什么问题?
看起来“key”属性在这方面有一定的作用。我用错了吗?为什么会影响输出?
在for循环中写if语句的最正确方法是什么?
我以前在代码中的其他循环中一直使用第一个方法,直到今天才出现问题。我是否需要更新所有这些方法,使其看起来像第二种方法,以避免像这样的奇怪行为?

f4t66c6m

f4t66c6m1#

vue v-for v-if
当它们存在于同一节点上时,v-if具有比v-for更高的优先级。这意味着v-if条件将不能访问v-for作用域中的变量
您正确地将v-forv-if一起使用。问题是:key被放在条件块上。
无论哪种方式,都会在div中呈现一些内容,您有两种可能的结果,并且键应该与v-for在一行上。不应有条件地呈现:key属性。

// 1
<div>
   <div>
      Hi,my name is john
   </div>
</div>

// 2
<div>
  <div>
     This person is private
  </div>
</div>

相关问题