Skip to content

Commit 8138916

Browse files
authored
Merge pull request #362 from riyueweiyi/fix/useKeyPress_error
fix(useKeyPress): keyCode is undefined
2 parents 6851e4f + c6bc0ac commit 8138916

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

packages/hooks/src/useKeyPress/__tests__/index.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,19 @@ describe('useKeyPress', () => {
2424
},
2525
);
2626
});
27+
28+
it('test keyCode is undefined', async () => {
29+
let msg = ''
30+
renderHook(
31+
() => useKeyPress('meta.e', e => {
32+
msg = 'keypress meta.e'
33+
})
34+
)
35+
act(() => {
36+
const ev = document.createEvent('Events');
37+
ev.initEvent('keydown', true, true);
38+
document.dispatchEvent(ev);
39+
})
40+
expect(msg).toEqual('')
41+
});
2742
});

packages/hooks/src/useKeyPress/index.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ function isType(obj: any) {
6868
* @returns Boolean
6969
*/
7070
function genFilterKey(event: any, keyFilter: any) {
71+
if (!event.key || !event.keyCode) {
72+
return false;
73+
}
7174
const type = isType(keyFilter);
7275
// 数字类型直接匹配事件的 keyCode
7376
if (type === 'number') {
@@ -94,10 +97,10 @@ function genFilterKey(event: any, keyFilter: any) {
9497
(genModifier && genModifier(event)) ||
9598
(aliasKey && isType(aliasKey) === 'array'
9699
? aliasKey.includes(event.key)
97-
: aliasKey === event.key) ||
100+
: (aliasKey === event.key)) ||
98101
(aliasKeyCode && isType(aliasKeyCode) === 'array'
99102
? aliasKeyCode.includes(event.keyCode)
100-
: aliasKeyCode === event.keyCode) ||
103+
: (aliasKeyCode === event.keyCode)) ||
101104
event.key.toUpperCase() === key.toUpperCase()
102105
) {
103106
genLen++;

0 commit comments

Comments
 (0)