2017-03-26 91 views
0

我有Vue組件,它接收來自道具的json數據,之後這個渲染子組件使用v-for並將這些數據作爲道具傳遞。一切工作正常,直到我試圖從列表中刪除一個項目,當我刪除它,它不正確地刪除元素。在vue devtools中,我看到父母正確接收數據,但沒有正確呈現它。誰能幫我? 這裏是我的代碼:https://gist.github.com/giokaxo/3d291b9b7b8ef97f81dc83799c430302父狀態改變後Vue組件沒有更新

回答

1

使用 「鑰匙」 屬性渲染元素使用V-的,例如當:

<p v-for="(product, index) in order.products" :key="i">..</p> 
1

相關文檔here

您可以直接使用v-for在自定義組件上,就像任何正常的 元素:

<my-component v-for="item in items" :key="item.id"></my-component> 

在2.2.0+版本中,如果將v-for與某個組件一起使用,現在需要key

然而,這並不會自動 任何數據傳遞到組件,因爲組件已經分離出自己的 範圍。爲了迭代數據傳遞到 組成部分,我們也應該使用道具:

<my-component 
    v-for="(item, index) in items" 
    v-bind:item="item" 
    v-bind:index="index" 
    v-bind:key="item.id"> 
    </my-component> 

原因不能自動注入項目到組件是因爲使組件 緊耦合如何v-for作品。明確其數據來源於何處,可以使組件在其他情況下可重用。

而且here

當Vue公司是更新由 默認與v-for渲染,它的元素列表採用了「就地補丁」的策略。如果數據 項目的順序發生了變化,Vue將簡單地修補每個元素,並確保它反映應該在該特定的 索引處呈現的內容,而不是移動DOM元素以匹配項目的 順序。

...

爲了給Vue的一個提示,以便它可以跟蹤每個節點的身份,從而 重用和重新排序現有的元素,你需要爲每個項目的唯一關鍵 屬性。對於關鍵的理想值將是每個項目的唯一編號 。

+0

它的工作謝謝你們倆 –

相關問題