リソースが限られているデバイスでは、コンポーネントプーリングによってパフォーマンスを活用するのが一般的です。たとえば、無限のスクロールリストがあります。ビューポートには常に約10個のコンポーネントが表示されるため、プールには20個のコンポーネントインスタンスしか存在できません。ユーザーが上下にスクロールすると、上部または下部のコンポーネントが反対側に切り替えられ、新しいデータで埋められます。このように、ユーザーはリストが長いと感じますが、コンポーネントインスタンスは20個しかありません。どのようにコンポーネントプールを行うには?
jQueryと命令型プログラミングでは、このようなコンポーネントプーリングのトリックを実装するのは簡単です。しかし、React世界では、UIは宣言的です。
const List = ({listData}) => {
return <ul>
{listData.map(item => <li>{item}</li>);
</ul>;
}
コードは、表示される項目のリストがあることを宣言しています。私たちのコードには、コンポーネントプーリングを行うコントロールはありません。私はReact自身がDOMプールを作成すると信じています。
したがって、パフォーマンス向上のためにコンポーネントプーリングを実装する方法はありますか?
ありがとう!この例を指摘しておきたいことは、開始インデックスが変更されるたびに、各要素のキーがシフトしてすべての要素が更新されるため、不必要なDOM更新が発生することです。プールサイズが安定している限り、キー(例えば '(startIndex + index)%poolSize')を回転させてみることができます。 RVでは、キーを 'startIndex + index'だけでなくYMMVに設定する方が良いことがわかりました。 – brianvaughn
Bah、回転キーは '(startIndex + index)%(displaySize + 1)'でなければなりません。 – brianvaughn