在我的应用程序中,我有一些3D模型的渲染图(使用three.js)
使用画布元素上的onMouseMove
事件,我可以根据3d空间计算鼠标的当前位置,并检测在该位置附近有哪些模型。
我是在附加到onMouseMove
组件的<canvas>
事件上执行此操作的。
我还使用类型<input>
的{{1}}组件来更改用于对象检测的“搜索半径”。我正在此组件上使用range
综合事件。
最初一切正常,但是只要我使用输入组件,从而触发onChange
事件,应用程序就会开始滞后。我进入Chrome的DevTools中的性能监视器,并记录了性能配置文件,并注意到onChange
事件前后,GC行为发生了一些奇怪的事情。
在onChange
事件被触发之前,GC似乎工作正常,但是一旦事件被触发,它就会改变其行为,并且不再显示“ zigzag”模式。
这正是应用开始滞后的地方,所有函数调用都比以前花费更长的时间。
任何人都可以帮助我了解这里的情况以及如何解决此问题吗?
谢谢。
好吧,非常奇怪的是,我尝试使用onChange
包来替换本机JSX输入元素,现在这种行为消失了。即使在输入上触发了react-input-range
事件,GC仍继续以“ zigzag”模式工作。我不知道该程序包如何在后台调度事件,但我怀疑React中的事件系统存在某些问题,可能会导致GC表现异常。
这是在相同情况下的性能监视器的屏幕截图,但是现在使用onChange
包: