0

Ive been trying to make this page where you can change object when clicking a key, but the eventlistener i am using works only once i select the screen that it is set on.

const onKeydown4 = (e) => {
            if (e.key == "w")
                setStore({
                    bigVariant:
                        store.bigVariant === "variant_big_A"
                            ? "variant_big_B"
                            : "variant_big_A",
                })
        }

useEffect(() => {
            if (props.name === "Screen 4") {
                window.addEventListener("keydown", onKeydown4)
            }
        }, [])

        return <Component {...props} />
    }
}
Cublaiiii
  • 31
  • 3

1 Answers1

0

you need to add window.removeEventListener("keydown", onKeydown4).

const App = () => {
  const onKeydown4 = (e) => {
    if (e.key == "w")
      setStore({
        bigVariant:
          store.bigVariant === "variant_big_A"
            ? "variant_big_B"
            : "variant_big_A",
      });
  };

  useEffect(() => {
    if (props.name === "Screen 4") {
      window.addEventListener("keydown", onKeydown4);
    }
    return () => {
      window.removeEventListener("keydown", onKeydown4);
    };
  }, []);

  return <Component {...props} />;
};

export default App;
Kanti vekariya
  • 667
  • 3
  • 13