Why not always use the index as the key in a vue.js for loop? Why not always use the index as the key in a vue.js for loop? vue.js vue.js

Why not always use the index as the key in a vue.js for loop?


Because arrays are mutable. The index of any given item can and will change if items are added to or removed from the array.

You want your key to be a unique value identifying only your unique component. A primary key that you create is always better than using an index.

Here is an example.

console.clear()Vue.component("item", {  props: ["value"],  data() {    return {      internalValue: this.value    }  },  template: `<li>Internal: {{internalValue}} Prop: {{value}}</li>`})new Vue({  el: "#app",  data: {    items: [1, 2, 3, 4, 5]  },  methods: {    addValue() {      this.items.splice(this.items.length / 2, 0, this.items.length + 1)    }  }})
<script src="https://unpkg.com/vue@2.2.6/dist/vue.js"></script><div id="app">  {{items}}  <ul>    <item v-for="i in items" :value="i" :key="i"></item>  </ul>  <button @click="addValue">AddValue</button>  <ul>    <item v-for="(i, index) in items" :value="i" :key="index"></item>  </ul></div>