React では、useEffect
フックを使用してキーボード イベントをリッスンし、条件に基づいてイベント リスナーを追加または削除できます。具体的には、useEffect
internally の値に基づいてa
キーボード イベント リスナーを追加するか削除するかを決定できます。a
以下は、 の値に基づいてキーボード イベント リスナーを動的に追加または削除する方法を示す例です。
import React, {
useState, useEffect } from 'react';
function MyComponent() {
const [a, setA] = useState(false);
useEffect(() => {
const handleKeyPress = (event) => {
if (a) {
console.log('Key pressed:', event.key);
}
};
window.addEventListener('keydown', handleKeyPress);
return () => {
window.removeEventListener('keydown', handleKeyPress);
};
}, [a]); // 依赖项数组包含 a,当 a 发生变化时重新运行 useEffect
const toggleA = () => {
setA(!a);
};
return (
<div>
<p>a is {
a ? 'true' : 'false'}</p>
<button onClick={
toggleA}>Toggle a</button>
</div>
);
}
export default MyComponent;
上記の例では、useEffect
内部handleKeyPress
関数はa
の値に基づいてキーボード イベントを処理するかどうかを決定します。a
値が の場合true
、キーボード イベントは監視されてトリガーされます。a
値がfalse
の場合、キーボード イベント リスナーは削除され、トリガーされなくなります。
「Toggle a」ボタンをクリックすると、a
の値がtrue
との間でfalse
切り替わり、a
の値に基づいてキーボード イベント リスナーを追加または削除する必要があることがわかります。