- イベントハンドラを直接渡す方法:
import React, { useEffect } from 'react';
function MyComponent() {
useEffect(() => {
// コンポーネントがマウントされた時に実行される処理
const handleClick = () => {
console.log('ボタンがクリックされました');
};
document.addEventListener('click', handleClick);
return () => {
// コンポーネントがアンマウントされる時に実行される処理
document.removeEventListener('click', handleClick);
};
}, []); // 第二引数を空の配列にすることで、マウントとアンマウント時のみ実行されるようにします
return (
<div>
<button>クリック</button>
</div>
);
}
- コンポーネント外に定義したイベントハンドラを渡す方法:
import React, { useEffect } from 'react';
function handleClick() {
console.log('ボタンがクリックされました');
}
function MyComponent() {
useEffect(() => {
document.addEventListener('click', handleClick);
return () => {
document.removeEventListener('click', handleClick);
};
}, []);
return (
<div>
<button>クリック</button>
</div>
);
}
上記のコード例では、useEffectフック内でイベントハンドラを定義し、コンポーネントのマウントとアンマウント時にイベントリスナーを追加および削除しています。また、直接イベントハンドラを渡す方法と、コンポーネント外に定義したイベントハンドラを渡す方法の2つの方法を示しました。
- フレームワークやライブラリのバージョン
- 問題の背景や具体的な使用ケース
- エラーメッセージや関連するエラーについての情報
- 追加のコンテキストや制約条件