【发布时间】:2014-11-28 23:57:52
【问题描述】:
我想构建一个有两种状态的应用程序;暂停和活跃。例如,我想禁用所有子/拥有组件的事件,如 onClick、onChange、onKeyDown 等。
我曾想过通过它的所有子/拥有的组件提供isActive=false 属性,并检查事件处理程序上的属性isActive。如果isActive 属性是假的,事件处理程序将什么也不做。我可以通过一个简单的辅助函数使这个机制变得更容易。但我担心的是,当我将应用状态更改为暂停时,所有子组件都需要重新渲染。
我正在寻找一种绕过所有事件处理程序(不是自定义事件处理程序)而不重新渲染所有组件的方法。
更新:我在 chrome 端看到渲染矩形,它不会重新渲染孩子。但是如果有更好的反应方式来做到这一点,我想学习它。
【问题讨论】:
-
您是否考虑过在 UI 前面放置一个透明(或非常不透明的灰色)绝对定位的 div,以便在暂停时“遮盖”所有控件?它会拦截所有事件。我不知道反应,所以没有答案。但是在js里面很简单。
-
是的,这是我的第二个想法,但事件不仅限于鼠标事件。
标签: javascript reactjs react-jsx