Reactでは、コンポーネントのライフサイクルや状態の変化に応じて特定の処理を実行するために、useEffect
フックが提供されています。useEffect
は、コンポーネントがレンダリングされた後に副作用を実行するために使用されます。ここでは、useEffect
の使い方といくつかのコード例を紹介します。
- 基本的な使い方:
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
// 副作用のコードをここに記述する
console.log('コンポーネントがレンダリングされました');
});
return <div>My Component</div>;
}
上記の例では、useEffect
フック内でコンソールにメッセージを出力しています。このコードは、コンポーネントが初めてレンダリングされた後に実行されます。
- 特定の状態の変化に反応する:
import React, { useEffect, useState } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log(`カウントの値が変更されました: ${count}`);
}, [count]);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
上記の例では、count
という状態が変化するたびにuseEffect
内のコードが実行されます。useEffect
の第2引数には、実行をトリガーする状態の配列を指定します。
- クリーンアップ処理の実行:
import React, { useEffect, useState } from 'react';
function MyComponent() {
const [count, setCount] = useState(0);
useEffect(() => {
console.log('コンポーネントがマウントされました');
return () => {
console.log('コンポーネントがアンマウントされました');
};
}, []);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
上記の例では、コンポーネントのマウント時に実行される処理と、コンポーネントのアンマウント時に実行されるクリーンアップ処理が定義されています。useEffect
のコールバック関数内で返された関数は、クリーンアップ処理として実行されます。
これらはuseEffect
の基本的な使い方とコード例です。useEffect
はさまざまなシナリオで使用され、コンポーネントの副作用処理を制御するための強力なツールです。