使用react-hotkeys-hook useHotkeys在Linux、macOS和Windows平台上实现不同热键的最佳方法是什么?

问题描述 投票:0回答:1

我使用

react-hotkeys-hook
构建了一个应用程序并创建了多个热键。

这些最初是在 Mac 上编写的,现在我希望在 Linux 和 Windows 上实现它们,之后我会考虑不同的浏览器。现在,只关注 Chrome。

一般来说,Mac 应用程序倾向于使用命令键,而 Linux 和 Windows 倾向于使用控制键。例如,

meta+f
ctrl+f
在 Chrome 中都是
find

如果可能的话,我想针对不同的操作系统使用不同的热键,而不是在所有平台上使用相同的映射。

出于其他原因,我已经在我的应用程序中使用

react-device-detect
,但这样的东西不起作用,因为
useHotkeys
是一个钩子。

if (isWindows) {
    useHotkeys(
        "ctrl+shift+1",
        () => {
            // do something
        },
        { enableOnFormTags: true, preventDefault: true }
    );
} else if (isMacOs) {
    useHotkeys(
        "meta+alt+1",
        () => {
            // do something
        },
        { enableOnFormTags: true, preventDefault: true }
    );
} 

任何有用的建议将不胜感激。

reactjs hotkeys
1个回答
0
投票

有多种方法可以避免条件挂钩调用,但在您的情况下,最简单、最干净的方法是根据操作系统对不同的击键做出反应。例如:

useHotkeys(
    isWindows
      ? "ctrl+shift+1"
      : isMacOs
        ? "meta+alt+1"
        : "meta+1",
    () => {
      // do something
    },
    {
      enableOnFormTags: true,
      preventDefault: true
     }
);

© www.soinside.com 2019 - 2024. All rights reserved.