リアクト:不要なDOMの更新は、私がJSX以内に「動的」いくつかのDOM要素を生成し、プロジェクトに反応している要素
<div className='ui form'>
<h2 className="header">{subtype}</h2>
{
subtypes[subtype].fields.map((field) =>
<div className='field' key={field.name}>
<label>{field.label}</label>
<input name={field.name}
value={entity[field.name]}
onChange={onInputChange}/>
</div>
)
}
</div>
特定のコンポーネントについては、生成された入力フィールドは、これまでの人生中に変化しません(その小道具だけが変更されます)、実際には静的なフォームを生成する単なる方法です。
だから、この「静的」JSXとまったく同じです:
<div className='ui form'>
<h2 className="header">{subtype}</h2>
<div className='field' key='field1'>
<label>Field 1</label>
<input name='field1'
value={entity['field1']}
onChange={onInputChange}/>
</div>
<div className='field' key='field2'>
<label>Field 2</label>
<input name='field2'
value={entity['field2']}
onChange={onInputChange}/>
</div>
</div>
私は最初のコードスニペットを使用した場合は、HTMLのDOM要素が状態/小道具を変更するたびに再作成されます。 2番目のスニペットを使用すると、HTMLは変更されず、フィールド値のみが更新されます(2番目のインスタンスでは、仮想DOM要素は同じであるが、最初のインスタンスでは検出されません)。
最初のコード例で「動的」仮想DOMを作成し、キャッシュして再利用できるようにする方法はありますか?Reactはそれを各レンダリングで同じと見なしますか?
感謝
「PureComponent」を拡張するコンポーネントにラップします。 – Sulthan