【问题标题】:Vue - how to create unique key with v-for="item in 3"Vue - 如何使用 v-for="item in 3" 创建唯一键
【发布时间】:2019-05-10 19:54:02
【问题描述】:

我在Vue中有这样一个模板:

    <AutoTaskBlock  ref="block" v-for="(block, index) in 2" key="index" class="block"></autoTaskBlock>
    <AutoTaskCircle ref="block" v-for="(circle, index) in 3" key="index" class="circle"></autoTaskCircle>

所以我确实有两个“从空气”创建的组件列表——我不使用任何数组来创建它——这有助于我使用“v-for="anything in (int)” . 但是 vue 警告我 v-for 制作的任何列表都需要唯一键。我想使用索引,但它是重复的,这给了我没有警告但错误。 我的下一个尝试是使用在

中计算的一些随机值

计算:{ rand() { return Math.random()*100 } }

但是像这样使用它:

    <AutoTaskBlock  ref="block" v-for="(block, index) in 2" key="rand" class="block"></autoTaskBlock>
    <AutoTaskCircle ref="block" v-for="(circle, index) in 3" key="rand" class="circle"></autoTaskCircle>

..导致同样的错误。检查后 - 计算的“rand”仅在创建时随机化,而不是稍后,因此每个都是相同的。下一次尝试是像这样创建 rand 方法:

方法:{ rand: function() { return Math.random()*100 } }

但同样 - 出现重复键错误。有没有办法使用这样的两个列表并给它们一个唯一的键?

谢谢, 卡雷格:

PS:两个组件中的相同 ref 是我想要的,所以这里没有错误。

【问题讨论】:

  • 当然@psidom 有个好主意,但真正的问题是键前缺少冒号。添加它解决了一个问题。

标签: vue.js key


【解决方案1】:

一种选择是为您创建的每个列表添加一个唯一的单词前缀 index 以进行重复数据删除;对于您的情况,例如 'block' + index'circle' + index:

<AutoTaskBlock  ref="block" v-for="(block, index) in 2" :key="'block' + index" class="block"></autoTaskBlock>
<AutoTaskCircle ref="block" v-for="(circle, index) in 3" :key="'circle' + index" class="circle"></autoTaskCircle>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2013-08-25
    • 2019-11-10
    • 1970-01-01
    • 2016-09-27
    相关资源
    最近更新 更多