【发布时间】:2016-06-27 04:44:15
【问题描述】:
我正在使用 ReactJS 编写一个基本的 HTML5 Canvas 组件,允许用户拖动对象。我正在为每个对象设置一个带有 {left, top} 的内联样式,以将其绝对定位在父容器中。问题是当我拖动对象时,move 事件触发得太快,以至于在每个对象上设置样式都需要很长时间,并且存在明显的延迟。
我运行了 Chrome 分析器,设置样式比我程序中的所有其他操作花费的时间要多得多。我想知道在性能方面是否有更好的方法来绝对定位元素。
【问题讨论】:
-
可以的话贴出相关代码。它可能有一些低效的地方,只有一双新的眼睛才能看到。
-
不要使用
top和left,使用transform: translate(x, y)更快,因为它使用了gpu blogs.adobe.com/webplatform/2014/03/18/… -
不,问题不在于 CPU 性能。问题是设置样式真的很慢。我想知道是否有办法在不设置样式的情况下更改绝对位置。我考虑过在元素上使用数据属性来执行类似 { left: attr('data-x'); } 但这不起作用。
标签: performance reactjs html5-canvas drag inline-styles