import { useKeyRef } from "rooks";export default function App() { function vowelsEntered(e) { console.log("[Demo 1] You typed a vowel"); } // window is the target const inputRef = useKeyRef(["a", "e", "i", "o", "u"], vowelsEntered); return ( <> <p>Press a,e,i,o,u in the input to trigger a console.log statement</p> <input ref={inputRef} /> </> );}
import { useKeyRef } from "rooks";export default function App() { function onKeyInteraction(e) { console.log("[Demo 2]Enter key", e.type); } const inputRef = useKeyRef(["Enter"], onKeyInteraction, { eventTypes: ["keypress", "keydown", "keyup"], }); return ( <> <p>Try "Enter" Keypress keydown and keyup </p> <p> It will log 3 events on this input. Since you can listen to multiple types of events on a keyboard key. </p> <input ref={inputRef} /> </> );}
import { useKeyRef } from "rooks";export default function App() { const [shouldListen, setShouldListen] = useState(false); function toggleShouldListen() { setShouldListen(!shouldListen); } function onKeyInteraction(e) { console.log("[Demo 3] Enter key", e.type); } const inputRef = useKeyRef(["Enter"], onKeyInteraction, { eventTypes: ["keypress", "keydown", "keyup"], when: shouldListen, }); return ( <> <p> Enter key events will only be logged when the listening state is true. Click on the button to toggle between listening and not listening states.{" "} </p> <p> Handy for adding and removing event handlers only when certain conditions are met. </p> <input ref={inputRef} /> <br /> <button onClick={toggleShouldListen}> <b>{shouldListen ? "Listening" : "Not listening"}</b> - Toggle{" "} </button> </> );}