React.js是否可以onChange综合事件中断垃圾回收?

时间:2019-01-24 17:05:03

标签: javascript reactjs html5 events dom

在我的应用程序中,我有一些3D模型的渲染图(使用three.js) 使用画布元素上的onMouseMove事件,我可以根据3d空间计算鼠标的当前位置,并检测在该位置附近有哪些模型。 我是在附加到onMouseMove组件的<canvas>事件上执行此操作的。

我还使用类型<input>的{​​{1}}组件来更改用于对象检测的“搜索半径”。我正在此组件上使用range综合事件。

最初一切正常,但是只要我使用输入组件,从而触发onChange事件,应用程序就会开始滞后。我进入Chrome的DevTools中的性能监视器,并记录了性能配置文件,并注意到onChange事件前后,GC行为发生了一些奇怪的事情。

Chrome Devtools性能监视器的屏幕截图

image

onChange事件被触发之前,GC似乎工作正常,但是一旦事件被触发,它就会改变其行为,并且不再显示“ zigzag”模式。

这正是应用开始滞后的地方,所有函数调用都比以前花费更长的时间。

任何人都可以帮助我了解这里的情况以及如何解决此问题吗?

谢谢。

编辑1

好吧,非常奇怪的是,我尝试使用onChange包来替换本机JSX输入元素,现在这种行为消失了。即使在输入上触发了react-input-range事件,GC仍继续以“ zigzag”模式工作。我不知道该程序包如何在后台调度事件,但我怀疑React中的事件系统存在某些问题,可能会导致GC表现异常。

这是在相同情况下的性能监视器的屏幕截图,但是现在使用onChange包:

image

0 个答案:

没有答案