問題一覧に戻る
上級パフォーマンス最適化
問題87: プロファイリング
パフォーマンスボトルネックを特定するためのReactアプリケーションのプロファイリング方法を学びます。Profiler APIはコンポーネントのレンダリング時間とフェーズを測定します。React DevTools Profilerはレンダリングパフォーマンスの視覚的分析を提供します。このデータを使用して遅いコンポーネントを見つけて最適化します。複雑なアプリケーションでパフォーマンスを維持するために必須です。
import React, { Profiler, useState } from 'react';
{/* Profilerコールバック関数 */}
const onRender = (id, phase, actualDuration) => {
console.log(`${id} (${}) took ${actualDuration}ms`);
};
{/* 高価な計算 */}
function ExpensiveList({ items }) {
const filtered = items.filter(item => {
// Simulate expensive computation
let sum = 0;
for (let i = 0; i < 1000000; i++) sum += i;
return item.includes('1');
});
return (
<ul>
{filtered.map(item => <li key={item}>{item}</li>)}
</ul>
);
}
function App() {
const [count, setCount] = useState(0);
const items = ['Item 1', 'Item 2', 'Item 11'];
return (
<div>
<button onClick={() => setCount(count + 1)}>
Count: {count}
</button>
{/* Profilerでラップ */}
< id="ExpensiveList" onRender={}>
<ExpensiveList items={items} />
</>
{/* DevToolsのリマインダー */}
{ && (
<p>Open React DevTools tab!</p>
)}
</div>
);
}
export default App;