@figliolia/react-hooks
Version:
A small collection of simple React Hooks you're probably rewriting on a regular basis
25 lines (21 loc) • 691 B
text/typescript
import { useEffect, useMemo } from "react";
import { FocusedKeyListener } from "Generics/FocusedKeyListener";
import type { Callback } from "Types";
import { useController } from "./useController";
import { useUnmount } from "./useUnmount";
export const useFocusedKeyListener = (
callback: Callback,
...keys: string[]
) => {
const activators = useMemo(() => (keys.length ? keys : ["Enter"]), [keys]);
const controller = useController(
new FocusedKeyListener(callback, ...activators),
);
useEffect(() => {
controller.update(callback, ...activators);
}, [activators, callback, controller]);
useUnmount(() => {
controller.destroy();
});
return controller;
};