1

我正在寻找一种解决方案来React根据用户的操作系统有条件地呈现内容。

例如。我有一个简单的组件,它显示键盘快捷键以与我正在使用的另一个组件进行交互。Windows在这种情况下,和的键盘快捷键Linux旨在显示ctrl + [action]. 但对于MacOS它需要显示cmd + [action]

这是我的组件:

import React from 'react';

import { ShortcutsContainer, MetaRow } from '../../styles';

const Shortcuts = () => (
  <ShortcutsContainer>
    <h1>Keyboard Shortcuts</h1>
    <MetaRow>
      <strong>ctrl + click</strong>
      <span> to start editing value</span>
    </MetaRow>
    <MetaRow>
      <strong>ctrl + Enter</strong>
      <span> to submit changes</span>
    </MetaRow>
    <MetaRow>
      <strong>Escape</strong>
      <span> to cancel editing</span>
    </MetaRow>
  </ShortcutsContainer>
);

export default Shortcuts;

让我们<strong>ctrl + click</strong>从中吸取教训。

我想要的是有这样的东西:

<strong>{getUserOS() === 'MacOS' ? 'cmd' : 'ctrl'} + click</strong>

我将如何做到这一点?一直在努力寻找获取用户操作系统的方法。

4

4 回答 4

3

好的,多亏了@MiguelCalderón 的推荐,我去看看 vanilla JS 解决方案。我检查了一下,得到了一个适用于这个用例的解决方案。

我创建了这个简单的小功能:

const cmdOrCtrl = () => (window.navigator.platform.match(/^Mac/) ? 'cmd' : 'ctrl');

然后按如下方式实现:

<strong>{cmdOrCtrl()} + click</strong>
于 2018-02-28T08:29:08.490 回答
2
window.navigator.platform

返回浏览器编译的平台

于 2018-02-28T08:18:03.393 回答
1

也许我们可以使用Platform模块来做到这一点。

只需var platform = require('platform');它并用于platform.os获取操作系统。

于 2018-02-28T08:11:33.860 回答
1

如果我正确地回答了您的问题,那么您对了解用户的操作系统很感兴趣。你可以使用这样的东西

getUserOs= () =>{
 return window.navigator.platform;
} 
于 2018-02-28T08:33:33.530 回答