Skip to content

Commit 66a1759

Browse files
Fixed stale var in useeffect.
1 parent 61c4238 commit 66a1759

File tree

2 files changed

+42
-8
lines changed

2 files changed

+42
-8
lines changed

src/index.test.tsx

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,15 @@ function useLocalFilter(filter: () => boolean) {
5757
return count;
5858
}
5959

60+
function useEnabledFlag(enabled: boolean) {
61+
const [count, setCount] = useState(0);
62+
const increment = () => setCount(count + 1);
63+
64+
useHotkeys('a', increment, {enabled});
65+
66+
return count;
67+
}
68+
6069
const HotkeysOnInput = ({ onPress, useTags }: { onPress: () => void, useTags?: boolean }) => {
6170
useHotkeys('a', onPress, { enableOnTags: useTags ? ['INPUT'] : undefined });
6271

@@ -303,16 +312,41 @@ test('useHotkeys should not be enabled on given form tags when tags is not set',
303312
});
304313

305314
test('useHotkeys should use its own custom filter system instead of the global hotkeys one', () => {
306-
const { result: result1 } = renderHook(() => useLocalFilter(() => false));
307-
const { result: result2 } = renderHook(() => useLocalFilter(() => true));
315+
const { result, rerender } = renderHook((returnFilterVal: boolean = false) => useLocalFilter(() => returnFilterVal));
308316

309-
expect(result1.current).toBe(0);
310-
expect(result2.current).toBe(0);
317+
expect(result.current).toBe(0);
311318

312319
act(() => {
313320
fireEvent.keyDown(document.body, { key: 'a', keyCode: 65 });
314321
});
315322

316-
expect(result1.current).toBe(0);
317-
expect(result2.current).toBe(1);
323+
expect(result.current).toBe(0);
324+
325+
rerender(true);
326+
327+
act(() => {
328+
fireEvent.keyDown(document.body, { key: 'a', keyCode: 65 });
329+
});
330+
331+
expect(result.current).toBe(1);
332+
});
333+
334+
test('useHotkeys should not be enabled when enabled flag is set to false', () => {
335+
const { result, rerender } = renderHook((enabled: boolean = false) => useEnabledFlag(enabled));
336+
337+
expect(result.current).toBe(0);
338+
339+
act(() => {
340+
fireEvent.keyDown(document.body, { key: 'a', keyCode: 65 });
341+
});
342+
343+
expect(result.current).toBe(0);
344+
345+
rerender(true);
346+
347+
act(() => {
348+
fireEvent.keyDown(document.body, { key: 'a', keyCode: 65 });
349+
});
350+
351+
expect(result.current).toBe(1);
318352
});

src/useHotkeys.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export function useHotkeys<T extends Element>(keys: string, callback: KeyHandler
5858
}, deps ? [ref, enableOnTags, filter, ...deps] : [ref, enableOnTags, filter]);
5959

6060
useEffect(() => {
61-
if(!enabled) {
61+
if (!enabled) {
6262
return
6363
}
6464

@@ -69,7 +69,7 @@ export function useHotkeys<T extends Element>(keys: string, callback: KeyHandler
6969
hotkeys(keys, (options as Options) || {}, memoisedCallback);
7070

7171
return () => hotkeys.unbind(keys, memoisedCallback);
72-
}, [memoisedCallback, options, keys]);
72+
}, [memoisedCallback, options, keys, enabled]);
7373

7474
return ref;
7575
}

0 commit comments

Comments
 (0)