<KeyboardShortcuts /> 是一个在渲染元素生命周期内处理键盘序列的组件。
当传入子元素时,它会捕获发生在子元素上或内部的按键事件。如果未传入子元素,则会在文档上捕获事件。
它使用 Mousetrap 库来实现键盘序列绑定。
示例
使用 shortcuts 属性对象渲染 <KeyboardShortcuts />:
import { useState } from 'react';
import { KeyboardShortcuts } from '@wordpress/components';
const MyKeyboardShortcuts = () => {
const [ isAllSelected, setIsAllSelected ] = useState( false );
const selectAll = () => {
setIsAllSelected( true );
};
return (
<div>
<KeyboardShortcuts
shortcuts={ {
'mod+a': selectAll,
} }
/>
[cmd/ctrl + A] Combination pressed? { isAllSelected ? 'Yes' : 'No' }
</div>
);
};
属性
该组件接受以下属性:
children
要渲染的元素,用于在其上监控按键事件。
- 类型:
ReactNode - 是否必需:否
shortcuts
一个快捷方式绑定对象,其中每个键是键盘组合,其值是在按下该组合时将调用的回调函数。
- 类型:
Object - 是否必需:是
注意:每个快捷方式的值应为一个一致的函数引用,而不是匿名函数。否则,当组件卸载时,回调将不会正确解绑。
注意:KeyboardShortcuts 组件不会更新以反映更改后的 shortcuts 属性。如果需要更改快捷方式,请挂载一个单独的 KeyboardShortcuts 元素,这可以通过分配唯一的 key 属性来实现。
bindGlobal
默认情况下,如果键盘组合发生在可编辑字段中,则不会调用回调。如果希望全局观察键盘事件(包括在可编辑字段内),请将 bindGlobal 传递为 true。
- 类型:
Boolean - 是否必需:否
提示:如果您需要但并非所有键盘事件都要全局观察,只需渲染两个不同的 KeyboardShortcuts 元素,一个带有 bindGlobal 属性,另一个不带。
eventName
默认情况下,回调是对 keydown 事件的响应而被调用。要覆盖此行为,请传递带有特定键盘事件名称的 eventName。
- 类型:
String - 是否必需:否