两个在进行列表渲染的同级元素,之间的 :key 属性值要避免重复

168 阅读1分钟

大致的错误代码如下:

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

虽然上述代码能正常编译,且中的两个 index,来自不同的 list。但两个 list 的值彼此之间可能存在相同,比如: list1 的 index 的值为 1、2、3,而 list2 的 index 的值为 1、2、3,或者 list 2 的值至少与 list 1 的值有一个相同,Vue 就会“建议性”报错:

Duplicate keys detected: 'xxx'. This may cause an update error. found in ……

其中的 xxx,为两个 index 之间相同的值。

为避免此类型的报错,建议类似如下方式定义 index

<div>
  <div v-for="(item, index) for list1" :key="'list1' + index">
  </div>
  <div v-for="(item, index) for list2" :key="'list2' + index">
  </div>
</div>