|
1 | | -import type { HotkeyCallback, Keys, Options, OptionsOrDependencyArray } from './types' |
2 | | -import { type DependencyList, RefCallback, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react' |
| 1 | +import { type HotkeyCallback, type Keys, type Options, type OptionsOrDependencyArray } from './types' |
| 2 | +import { type DependencyList, type RefCallback, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react' |
3 | 3 | import { mapCode, parseHotkey, parseKeysHookInput, isHotkeyModifier } from './parseHotkeys' |
4 | 4 | import { |
5 | 5 | isHotkeyEnabled, |
@@ -28,7 +28,12 @@ export default function useHotkeys<T extends HTMLElement>( |
28 | 28 | options?: OptionsOrDependencyArray, |
29 | 29 | dependencies?: OptionsOrDependencyArray, |
30 | 30 | ) { |
31 | | - const [ref, setRef] = useState<T | null>(null) |
| 31 | + const [ref, _setRef] = useState<T | null>(null) |
| 32 | + const setRef = useCallback<RefCallback<T | null>>((instance) => { |
| 33 | + _setRef(instance) |
| 34 | + return () => _setRef(null) |
| 35 | + }, []) |
| 36 | + |
32 | 37 | const hasTriggeredRef = useRef(false) |
33 | 38 |
|
34 | 39 | const _options: Options | undefined = !Array.isArray(options) |
@@ -251,5 +256,5 @@ export default function useHotkeys<T extends HTMLElement>( |
251 | 256 | } |
252 | 257 | }, [ref, memoisedOptions, activeScopes, _keys]) |
253 | 258 |
|
254 | | - return setRef as RefCallback<T> |
| 259 | + return setRef |
255 | 260 | } |
0 commit comments