电子:[违规]'点击'处理程序需要574毫秒

时间:2018-02-07 10:35:10

标签: electron chromium

我正在构建一个SPA,一切都在Chrome浏览器中正常运行。我尝试在Electron中运行相同的代码,并且出现以下错误(单击按钮时):

[Violation] 'click' handler took 574ms

此外,在此错误之后,webview和访客页面之间的所有IPC调用(通过ipcRenderer.sendToHost)都被阻止,即没有到达webview。

谷歌搜索告诉我,阻止UI的限制是50毫秒。有没有办法可以增加这个限制?

编辑:这是处理点击的代码。它是一个带有一个标签的标签栏。代码是reactjs。

import { Link } from 'react-router';
import { Tab as MUITab } from 'material-ui/Tabs';

class TabBar extends Component {
  render() {
    const view = {
      to: '/accounts',
      id: 'accounts',
      icon: 'home',
      label: 'ACCOUNTS'
    };

    return (
      <Link to={ view.to }> // <--- <a> tag in DOM, receives the click
        <Tab view={ view } />
      </Link>
    );
}

class Tab extends Component {
  static propTypes = {
    view: PropTypes.object.isRequired
  };

  render () {
    const { view } = this.props;

    return (
      <MUITab
        icon={ view.icon }
        label={
          this.renderLabel(view.id)
        }
      />
    );
  }

  renderLabel (id, bubble) {
    return (
      <div className={ styles.label }>
        <FormattedMessage
          id={ `settings.views.${id}.label` }
        />
        { bubble }
      </div>
    );
  }
}

1 个答案:

答案 0 :(得分:1)

  

谷歌搜索告诉我,阻止UI的限制是50毫秒。有没有办法可以增加这个限制?

可能不是你想要的答案,但我宁愿建议重构代码不要阻塞。对于用户而言,50ms是显着的时间,如果您的代码块平均为500ms,则会使用户显着的UI滞后。 Electron的IPC具有异步机制 - 尝试避免同步,但使用异步机制来使UI无阻塞。