Skip to content

Commit 24a08f9

Browse files
feat: add ref cleanup patter usage
# Fixes #1314 (comment)
1 parent 12d519a commit 24a08f9

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

packages/react-hotkeys-hook/src/lib/useHotkeys.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
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'
33
import { mapCode, parseHotkey, parseKeysHookInput, isHotkeyModifier } from './parseHotkeys'
44
import {
55
isHotkeyEnabled,
@@ -28,7 +28,12 @@ export default function useHotkeys<T extends HTMLElement>(
2828
options?: OptionsOrDependencyArray,
2929
dependencies?: OptionsOrDependencyArray,
3030
) {
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+
3237
const hasTriggeredRef = useRef(false)
3338

3439
const _options: Options | undefined = !Array.isArray(options)
@@ -251,5 +256,5 @@ export default function useHotkeys<T extends HTMLElement>(
251256
}
252257
}, [ref, memoisedOptions, activeScopes, _keys])
253258

254-
return setRef as RefCallback<T>
259+
return setRef
255260
}

0 commit comments

Comments
 (0)