1
我正在學習React。目前試圖瞭解協調過程如何工作。反應:當底層數據結構發生變化時,密鑰是否被重新分配?
我有了這個地圖功能我JSX:
render: function() {
var currentIssues = this.state.issues.map(function(issue, i) {
return (
<Issue key={ i } ... </Issue>
);
});
return (...)
我知道應該的關鍵屬性添加到每個子元素。以便React可以可靠地執行update-,delete-和insert-operations。
現在,假設我的數組中有五個問題元素。我刪除了第二個元素。
將渲染函數再次執行嗎?
新訂單將變爲:0,1(前2),2(前3),3(前4)?
或者結構是:0,2,3,4?
如果你正在修改'issues',隨後調用'新VAL setState',然後是的,你會強制一個'render()'。至於'key'的值,它看起來就是你數組的索引('i'),它總是順序的。 – lux
如果您正在添加/刪除數組中的項目,您應該*確實*不會使用索引作爲鍵。如果你有一個,可以使用'issue.id',或者我認爲將整個'issue'對象傳遞給key是可以的,但是我不確定。 –