我正在构建一个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>
);
}
}
答案 0 :(得分:1)
谷歌搜索告诉我,阻止UI的限制是50毫秒。有没有办法可以增加这个限制?
可能不是你想要的答案,但我宁愿建议重构代码不要阻塞。对于用户而言,50ms是显着的时间,如果您的代码块平均为500ms,则会使用户显着的UI滞后。 Electron的IPC具有异步机制 - 尝试避免同步,但使用异步机制来使UI无阻塞。