mirror of
https://github.com/streamich/react-use.git
synced 2026-01-18 14:06:52 +00:00
30 lines
712 B
TypeScript
30 lines
712 B
TypeScript
import { useEffect, useState } from 'react';
|
|
import useMount from './useMount';
|
|
|
|
const useKeyboardJs = (combination: string | string[]) => {
|
|
const [state, set] = useState<[boolean, null | KeyboardEvent]>([false, null]);
|
|
const [keyboardJs, setKeyboardJs] = useState<any>(null);
|
|
|
|
useMount(() => {
|
|
import('keyboardjs').then(setKeyboardJs);
|
|
});
|
|
|
|
useEffect(() => {
|
|
if (!keyboardJs) {
|
|
return;
|
|
}
|
|
|
|
const down = event => set([true, event]);
|
|
const up = event => set([false, event]);
|
|
keyboardJs.bind(combination, down, up);
|
|
|
|
return () => {
|
|
keyboardJs.unbind(combination, down, up);
|
|
};
|
|
}, [combination, keyboardJs]);
|
|
|
|
return state;
|
|
};
|
|
|
|
export default useKeyboardJs;
|