Reactで、aの値がtrueの場合にキーボード監視メソッドを追加し、aの値がfalseの場合にキーボード監視メソッドを削除したいのですが、どうすればよいでしょうか?

React では、useEffectフックを使用してキーボード イベントをリッスンし、条件に基づいてイベント リスナーを追加または削除できます。具体的には、useEffectinternally の値に基づいて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の値に基づいてキーボード イベント リスナーを追加または削除する必要があることがわかります。

おすすめ

転載: blog.csdn.net/z2000ky/article/details/132409543