P粉4208682942023-09-04 13:44:33
通常、useMemo
は、レンダリング中に高価な計算値をキャッシュするために使用されます。ただし、あなたの場合、高価なレンダリング計算は必要なく、入力が変更されるたびに非常に大きなツリーをレンダリングするだけです。実際、すべての状態は App
コンポーネント上にあるため、アプリ全体が毎回再レンダリングされます。
React でこの問題を最適化する方法は、コンポーネントのレンダリングをできるだけスキップすることです。これを行うには、ページの無関係な部分を異なるコンポーネントに分割します。ロジックを分離したら、React.memo()
でラップします。これは、コンポーネントのレンダリングを完全にスキップできる別の最適化手法です。
私にとって、あなたが加えられる最も明白な変更は次のとおりです:
は定数であり、レンダリングのたびに再定義する必要がないため (メモリを消費する可能性があります)、
TodosDatos を
App
<Table> を新しいコンポーネントに配置し、
React.memo()これらの変更をここに実装しました: https://codesandbox.io/s/green-breeze-mmum6n?file=/src/App.js
。入力がほぼ瞬時に行われることがわかります。パフォーマンスを向上させるために、他の場所で複数の最適化を行うこともできます。 ###