Problem:
Even after clicking Disable, pressing the Enter key still increments the counter.
import React, { useEffect, useEffectEvent } from "react";
function App() {
const [count, setCount] = React.useState(0);
const [enabled, setEnabled] = React.useState(true);
const onKeyDown = useEffectEvent(() => (e) => {
if (e.key === "Enter" && enabled) {
setCount((c) => c + 1);
}
});
useEffect(() => {
document.addEventListener("keydown", onKeyDown);
return () => document.removeEventListener("keydown", onKeyDown);
}, []);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setEnabled((e) => !e)}>
{enabled ? "Disable" : "Enable"}
</button>
</div>
);
}
export default App;