4. Components
コンポーネントのライフサイクル
Reactコンポーネントのライフサイクルは、コンポーネントがマウント(初期化)される時からアンマウント(削除)されるまでの一連の段階を指します。関数コンポーネントでは、主にuseEffect
フックを使用してライフサイクルイベントを処理します。
マウント(Mounting)
コンポーネントが最初にDOMに追加される時のライフサイクルです。useEffect
フックを使用して、コンポーネントがマウントされた直後に実行されるコードを記述できます。
import React, { useEffect } from 'react';
function ExampleComponent() {
useEffect(() => {
console.log('Component mounted');
// クリーンアップ関数を返すことでアンマウント時の処理を行う
return () => {
console.log('Component will unmount');
};
}, []);
return <div>Example Component</div>;
}
アップデート(Updating)
コンポーネントのprops
やstate
が変更された時のライフサイクルです。useEffect
の第二引数に依存関係の配列を渡すことで、特定の値が変更された時のみ副作用を実行できます。
import React, { useEffect, useState } from 'react';
function Counter() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`Count updated to ${count}`);
}, [count]);
return (
<div>
<p>You clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>Click me</button>
</div>
);
}
アンマウント(Unmounting)
コンポーネントがDOMから削除される時のライフサイクルです。useEffect
フックのクリーンアップ関数を利用して、リソースの解放やイベントリスナーの解除などを行います。
useEffect(() => {
const handleResize = () => {
console.log('Window resized');
};
window.addEventListener('resize', handleResize);
return () => {
window.removeEventListener('resize', handleResize);
};
}, []);