好用的按键响应库
使用 hotkeys-js 库来兼容 mac、windows 的键盘快捷键。封装一个基础 hooks 如下
import hotkeys, { KeyHandler } from 'hotkeys-js';import { useEffect } from 'react';const useHotKey = (keys: string, callback: KeyHandler) => {useEffect(() => {hotkeys(keys, callback);return () => hotkeys.unbind(keys, callback);}, [keys, callback]);};export default useHotKey;
快捷键操作
元素选择
前提都是在元素被选中的情况
- ⌘C / Ctrl+C 新建当前选择的元素的一个数据结构
- ⌘V / Ctrl+V 将新建的元素添加到 components 数组中
- Backspace / Delete 在 components 数组中删除选择的元素
- ESC currentElement 设置为空
元素移动
- 上下左右移动一像素 - ↑ ↓ → ← : 更新选中元素 props 的 top/left 值
- 上下左右移动十像素 - Shift + ↑ ↓ → ←:更新选中元素 props 的 top/left 值
撤销/重做
- 撤销 - ⌘Z / Ctrl+Z
- 重做 - ⌘⇧Z / Ctrl+Shift+Z
插件化
export default function InitHotKeys() {const { dispatch } = useContext<IContextProps>(AppContext);useHotKey('ctrl+c, command+c', () => {dispatch({type: COPYCOMPONENT,});});// ....}
如上我们实现了复制的功能、实际还是调用自定义的 Redux 方法、其他都是一样的操作。然后我们只需要在 main 直接调用自定义的hooks 即可 😌
