模板循环给出重复键警告
Template loop gives duplicate keys warning
<template v-for="errors in validationErrors">
<li v-for="(error, index) in errors" :key="index">{{ error }}</li>
</template>
以上代码抛出:
Duplicate keys detected: '0'. This may cause an update error
如果我从内部循环中删除 index
并将 error
分配给 key
那么就没有警告,但是这似乎是错误的。
有什么方法可以在使用模板时不出现此警告?
您可以改用这个:
<template v-for="(errors, outerIndex) in validationErrors">
<li v-for="(error, index) in errors" :key="outerIndex + '-' + index">
{{ error }}
</li>
</template>
说明
如果没有来自外循环的唯一信息,内循环密钥每次都会使用相同的集合,所以你最终会得到重复项。前任。如果你有两个外循环,每个循环有 3 个项目,你会得到这个:
<li key="0">...</li>
<li key="1">...</li>
<li key="2">...</li>
<li key="0">...</li>
<li key="1">...</li>
<li key="2">...</li>
通过也使用 outerIndex
,您可以保持内部元素的唯一性:
<li key="0-0">...</li>
<li key="0-1">...</li>
<li key="0-2">...</li>
<li key="1-0">...</li>
<li key="1-1">...</li>
<li key="1-2">...</li>
<template v-for="errors in validationErrors">
<li v-for="(error, index) in errors" :key="index">{{ error }}</li>
</template>
以上代码抛出:
Duplicate keys detected: '0'. This may cause an update error
如果我从内部循环中删除 index
并将 error
分配给 key
那么就没有警告,但是这似乎是错误的。
有什么方法可以在使用模板时不出现此警告?
您可以改用这个:
<template v-for="(errors, outerIndex) in validationErrors">
<li v-for="(error, index) in errors" :key="outerIndex + '-' + index">
{{ error }}
</li>
</template>
说明
如果没有来自外循环的唯一信息,内循环密钥每次都会使用相同的集合,所以你最终会得到重复项。前任。如果你有两个外循环,每个循环有 3 个项目,你会得到这个:
<li key="0">...</li>
<li key="1">...</li>
<li key="2">...</li>
<li key="0">...</li>
<li key="1">...</li>
<li key="2">...</li>
通过也使用 outerIndex
,您可以保持内部元素的唯一性:
<li key="0-0">...</li>
<li key="0-1">...</li>
<li key="0-2">...</li>
<li key="1-0">...</li>
<li key="1-1">...</li>
<li key="1-2">...</li>