Reactのコンポーネントライフサイクルを深掘りする

Reactコンポーネントライフサイクルは、コンポーネントが作成され、更新され、破棄されるまでの一連の流れを指します。本記事では、各フェーズと関連するメソッドやフックについて詳細に解説します。
目次
1. コンポーネントライフサイクルの概要
Reactコンポーネントには「マウント」「更新」「アンマウント」の3つの主要なライフサイクルフェーズがあります。
2. マウントフェーズ
コンポーネントがDOMに追加されるフェーズです。以下のメソッドやフックが使用されます。
useEffect(() => {
console.log('Component Mounted');
}, []);
[/code]
**サンプルコード:**
[code]
function App() {
useEffect(() => {
console.log('App component mounted');
}, []);
return <h1>Hello, React!</h1>;
}
サンプルコード:
function App() {
useEffect(() => {
console.log('App component mounted');
}, []);
return <h1>Hello, React!</h1>;
}
3. 更新フェーズ
コンポーネントのpropsやstateが変更されたときに発生します。
useEffect(() => {
console.log('Component Updated');
});
サンプルコード:
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log('Counter updated:', count);
}, [count]);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
4. アンマウントフェーズ
コンポーネントがDOMから削除されるときに実行される処理です。
useEffect(() => {
return () => {
console.log('Component Unmounted');
};
}, []);
サンプルコード:
function Timer() {
useEffect(() => {
const timer = setInterval(() => {
console.log('Timer running');
}, 1000);
return () => {
clearInterval(timer);
console.log('Timer stopped');
};
}, []);
return <p>Timer Component</p>;
}
5. useEffectの使い方
useEffectはマウント、更新、アンマウントのライフサイクルを制御する重要なフックです。
6. useLayoutEffectの違い
useLayoutEffectはDOMの変更が描画される前に同期的に実行されます。
サンプルコード:
useLayoutEffect(() => {
console.log('useLayoutEffect executed');
})
7. コンポーネントの初期化
初期化処理はuseEffectやuseStateを使用して行います。
8. ライフサイクルメソッド (classコンポーネント)
componentDidMount、componentDidUpdate、componentWillUnmountが主なメソッドです。
サンプルコード:
class Example extends React.Component {
componentDidMount() {
console.log('Component Mounted');
}
componentDidUpdate() {
console.log('Component Updated');
}
componentWillUnmount() {
console.log('Component Unmounted');
}
render() {
return <div>Hello from Class Component</div>;
}
}
9. エラーハンドリング
Error Boundaryを使用して、コンポーネントのエラーをキャッチします。
class ErrorBoundary extends React.Component {
componentDidCatch(error, info) {
console.log(error, info);
}
render() {
return this.props.children;
}
}
10. ライフサイクルのベストプラクティス
適切にuseEffectやメソッドを使用し、不要な再レンダリングを防ぎます。
11. React DevToolsでライフサイクルを分析
React DevToolsを使用して、コンポーネントライフサイクルを可視化・デバッグします。
12. まとめ
Reactのライフサイクルは、コンポーネントの動作を理解し、効率的に管理するために重要です。
-
前の記事
Rubyのシングルトンメソッド:オブジェクト単位のカスタマイズ術 2025.02.25
-
次の記事
Vue.jsで状態依存コンポーネントを効率的にレンダリングする方法 2025.02.26
コメントを書く