2017-06-13 86 views

回答

3

因爲數組是可變。如果項目添加到陣列或從陣列中刪除項目,任何給定項目的索引可以並將更改爲

你希望你的key是一個唯一的值,只標識你的獨特組件。您創建的主鍵始終優於使用索引。

這裏是一個例子。

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/[email protected]/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>

注意,點擊時addValue是,在上面的列表代表了數組,其中真正在數組中的新號碼;在中間。在按鈕下面的第二個列表中,數值做而不是代表陣列中的實際位置,並且內部和屬性值做而不是同意。

+0

@getsetbro有一些方法可以減輕使用索引作爲關鍵時出現的問題,並且可能會有索引是您唯一的選擇,但理想的情況是使用正確的關鍵。 – Bert

相關問題