私はReactを使用しており、状態のオブジェクトの配列を更新したいとします。オブジェクトの配列に対する反復setStateはすべてのコンポーネントを再レンダリングします
const newState = this.state.elements.slice().concat({key: 'val'});
this.setState({elements: newState});
しかし、私はこの問題に遭遇した問題は、これらのデータをレンダリングする機能やコンポーネントにバインドされたときに、それがあることであるすべてのコンポーネントを再レンダリング:インターネットでの全体的な答えは、以下に同様のアプローチを使用することでした。
例(マップをマッピングしながらインデックスを取得するためにlodashから使用されている)が挙げられる:
render() {
return (
<div>
{map(this.state.elements, (el, index) => <Component key={`el-${index}`} el={el} />)}
</div>
);
}
ても、状態変化毎回、配列順序が変更されないと、キーの構成要素の変更をdoesntの、コンポーネントをゼロから再レンダリングしてマウントします。
この問題の解決策はありますか?
ベスト、起こっていただきました Y
あなたは完全に 'Array.prototype.map'を使うことができます。コールバック関数は '(currentItem、currentIndex、originalArray)'を受け取ります。 – cfraser
インデックスをキーとして使用することは、反パターンです。 https://medium.com/@robinpokorny/index-as-a-key-is-an-anti-pattern-e0349aece318 –