使用 v-for 循环渲染组件,当数据更新导致重新渲染时,Vue将会尽可能地复用这些相同的组件实例,而不是重新创建它们。特殊attribute keykey 的特殊 attribute 主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。如果不使用 key,Vue 会使用一种最大限度减少动态元素并且尽可能的尝试就地修改/复用相同类型元素的算法。而使用 key 时,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。有相同父元素的子元素必须有独特的 key。重复的 key 会造成渲染错误。使用 v-for 循环渲染组件,如果一个组件实例是第一次创建(例如,列表项第一次被添加到 v-for 循环中),那么Vue会按照正常的生命周期顺序创建新的组件实例(beforeCreated -> created -> beforeMount -> mounted);如果一个组件实例在之前已经被创建过,并且现在被复用了(例如,v-for 循环中的组件列表中的项发生了变化),那么Vue会重用该组件实例,则仅会经过更新相关的生命周期(beforeUpdate -> updated)。生命周期图示
v-for
循环渲染组件,当数据更新导致重新渲染时,Vue将会尽可能地复用这些相同的组件实例,而不是重新创建它们。v-for
循环渲染组件,如果一个组件实例是第一次创建(例如,列表项第一次被添加到v-for
循环中),那么Vue会按照正常的生命周期顺序创建新的组件实例(beforeCreated
->created
->beforeMount
->mounted
);如果一个组件实例在之前已经被创建过,并且现在被复用了(例如,v-for
循环中的组件列表中的项发生了变化),那么Vue会重用该组件实例,则仅会经过更新相关的生命周期(beforeUpdate
->updated
)。