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