React要求您在數組中的元素上具有唯一的key
屬性。 React docs建議在您的數據中使用id
。如果你沒有id
,那麼你可以使用數組索引作爲「最後的手段」,但要注意的是,使用索引時可能會導致性能問題,當項目可以重新排序。在構建來自多個源數組的元素數組以及對.map()
的多個調用時,我也遇到了一些煩人的問題,每個調用都有不同的轉換,在這種情況下,數組索引不會是唯一的。爲ReactJS鍵生成順序ID
我已經開始拋出以下樣板到我的部件:
constructor(props) {
super(props);
this.getId = this.getId.bind(this);
this.id = 0;
}
getId() {
return this.id++;
}
可以使用像這樣:
render() {
const items = this.props.greetings.map(text => ({
<li key={this.getId()}>{text}</li>
}));
return (
<ul>
{items}
</ul>
);
}
這是簡單,快速,並且沒有問題使用數組索引有,但我不知道這種方法是否有任何問題,或者我忽略了更好的替代方案。這是不好的做法嗎?有沒有其他簡單的方法來生成沒有數組索引問題的key
?
'key' prop不需要是一個整數。您可以將任何字符串傳遞給鍵。所以如果你的'text'道具在其他同級組件中是唯一的,你可以將它作爲'key'道具傳遞。 – bennygenel
@bennygenel這是一個人爲的例子。你可以假設'text'不能保證是唯一的。 – mgalgs