概览
新增:对于 v-if / v-else / v-else-if 的各分支项 key 将不再是必须的,因为现在 Vue 会自动生成唯一的 key。
- 非兼容:如果你手动提供
key,那么每个分支必须使用唯一的key。你不能通过故意使用相同的key来强制重用分支。
- 非兼容:如果你手动提供
非兼容:
<template v-for>的key应该设置在<template>标签上 (而不是设置在它的子节点上)。
在条件分支中
Vue 2.x 建议在 v-if/v-else/v-else-if 的分支中使用 key。
1 | <!-- Vue 2.x --> |
这个示例在 Vue 3.x 中仍能正常工作。但是我们不再建议在 v-if/v-else/v-else-if 的分支中继续使用 key attribute,因为没有为条件分支提供 key 时,也会自动生成唯一的 key。
1 | <!-- Vue 3.x --> |
非兼容变更体现在如果你手动提供了 key,那么每个分支都必须使用一个唯一的 key。因此大多数情况下都不需要设置这些 key。
1 | <!-- Vue 2.x --> |
结合 <template v-for>
在 Vue 2.x 中 <template> 标签不能拥有 key。不过你可以为其每个子节点分别设置 key。
1 | <!-- Vue 2.x --> |
在 Vue 3.x 中 key 则应该被设置在 <template> 标签上。
1 | <!-- Vue 3.x --> |
类似地,当使用 <template v-for> 时存在使用 v-if 的子节点,key 应改为设置在 <template> 标签上。
1 | <!-- Vue 2.x --> |