Skip to content

Instantly share code, notes, and snippets.

@kldzj
Last active May 12, 2024 18:36
Show Gist options
  • Select an option

  • Save kldzj/372820d2fbbcfa3fd32fe663c4f51d23 to your computer and use it in GitHub Desktop.

Select an option

Save kldzj/372820d2fbbcfa3fd32fe663c4f51d23 to your computer and use it in GitHub Desktop.
React Konami-Code Hook
import { useState, useEffect } from "react";
const code = "38384040373937396665";
export default function useKonami(func: () => void) {
const [pattern, setPattern] = useState("");
useEffect(() => {
const handler = (e: KeyboardEvent) => {
if (!e.keyCode) return;
if (e.repeat) return;
setPattern((p) => (p + e.keyCode.toString()).slice(code.length * -1));
};
window.addEventListener("keyup", handler);
return () => window.removeEventListener("keyup", handler);
}, []);
useEffect(() => {
if (pattern === code) {
if (func && typeof func === "function") func();
setPattern("");
}
}, [pattern, func]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment