[Vue警告]:检测到重复的键:x.这可能会导致更新错误

use*_*600 11 vuejs2

当我将项添加到具有重复ID的数组时,我一直收到错误.

active_widgets:Array[4]
0:Object
    id:1
    name:"Text Blocks"
    selected:false
    set:false
1:Object
    id:3
    name:"Bibliographies/References"
    selected:false
    set:false
2:Object
    id:1
    name:"Text Blocks"
    selected:false
    set:false
3:Object
    id:2
    name:"Free Text"
    selected:"Test"
    set:false
Run Code Online (Sandbox Code Playgroud)

在我的场景中,'id'元素可能是重复的,因为用户可以多次在页面上拥有相同的小部件.我想知道我是否可以抑制或删除VueJS一直在控制台中抛出的警告.

Bha*_*idi 24

v-for导致此警告的不同循环的相同键.您可以使用不同的键来避免这种情况v-for.

<div v-for="(item, i) in items" :key="i"></div>

<div v-for="(item, i) in items2" :key="'A'+ i"></div>

<div v-for="(item, i) in items3" :key="'B',+ i"></div>

//here A,B's sample characters.you can take any character in that place 
Run Code Online (Sandbox Code Playgroud)

  • 我糊涂了。我刚刚遇到了这个问题,但我认为每个 `v-for` 循环中的键都必须是唯一的。解释如下:https://forum.vuejs.org/t/v-for-key-does-the-key-need-to-be-unique-across-the-entire-component/28040 (7认同)
  • 关键提示是“同一共同父级的子级必须具有唯一的键” (5认同)
  • 这看起来很傻,但确实有效! (2认同)

W4G*_*4G1 5

替代方法:

v-for元素嵌套在任何其他元素中似乎也可行。

<div>
    <div v-for="(item, index) in items" :key="index"></div>
</div>

<div>
    <div v-for="(item, index) in items2" :key="index"></div>
</div>
Run Code Online (Sandbox Code Playgroud)