useKeyCombination
Introduce
지정된 키 조합을 눌렀을 때 콜백 함수를 호출하는 훅입니다.
- 지정된 키들을 모두 눌렀을 때 콜백 함수를 호출하며, 필요에 따라 기본 동작을 막을 수도 있습니다.
- 예를 들어,
Ctrl + K
키 조합을 감지하여 특정 작업을 실행하고자 할 때 사용할 수 있습니다.
interface UseKeyCombinationProps {
shortcutKeys: string[];
callback: () => void;
isPrevent?: boolean;
}
const useKeyCombination = ({
shortcutKeys,
callback,
isPrevent = false,
}: UseKeyCombinationProps): void
Props
shortcutKeys
: 키 조합을 나타내는 키 코드의 배열callback
: 키 조합이 감지되었을 때 실행할 콜백 함수isPrevent
: true로 설정하면 키 조합이 눌렸을 때 기본 동작 방지 (기본값: false)
Examples
TestComponent.tsx
import { useCallback, useRef, useState } from 'react';
import useKeyCombination from './hooks/useKeyCombination';
function TestComponent() {
const [bold, setBold] = useState(false);
const [isSave, setIsSave] = useState(false);
const input = useRef<HTMLInputElement>(null);
const keyActions = {
toggleBold: {
shortcutKeys: ['ControlLeft', 'KeyB'],
callback: useCallback(() => {
setBold((state) => !state);
}, [setBold]),
},
save: {
shortcutKeys: ['MetaLeft', 'KeyS'],
callback: useCallback(() => setIsSave((state) => !state), [setIsSave]),
isPrevent: true,
},
search: {
shortcutKeys: ['MetaLeft', 'KeyK'],
callback: useCallback(() => input.current?.focus(), []),
},
};
useKeyCombination(keyActions.toggleBold);
useKeyCombination(keyActions.save);
useKeyCombination(keyActions.search);
return (
<div>
<input type="text" ref={input} placeholder="Press command + K" />
<div>USE-REACT-HOOKS</div>
<ul>
<li style={{ fontWeight: bold ? 'bold' : 'normal' }}>
command + B : Bold
</li>
<li>command + S: {isSave ? 'SAVE!' : 'Not saved yet'}</li>
</ul>
</div>
);
}