【发布时间】:2015-06-05 04:46:30
【问题描述】:
我在同时使用 React JS 和画布时遇到了问题。
一切似乎都很顺利,但是当我的应用程序画布的其他部分发生变化而调用渲染方法时会闪烁。似乎 react 正在将其重新附加到 DOM 中(可能是因为我在其上播放动画,并且每次绘制的帧都不同)。
这是我的渲染方法:
render: function() {
var canvasStyle = {
width: this.props.width
};
return (
<canvas id="interactiveCanvas" style={canvasStyle}/>
);
}
作为一种临时解决方案,我手动添加我的画布标签,而不使用 reactjs:
render: function() {
var canvasStyle = {
width: this.props.width
};
return (
<div id="interactivediv3D">
</div>
);
}
然后:
componentDidMount: function() {
var canvasStyle = {
width: this.props.width
};
var el = document.getElementById('interactivediv3D');
el.innerHTML = el.innerHTML +
'<canvas id="interactive3D" style={'+canvasStyle+'}/>';
},
而且它工作正常。但我认为这不是一种干净的方式,最好使用reactjs渲染这个canvas标签。
知道如何解决这个问题吗?或者至少避免在仅绘制框架更改时reactjs重新渲染此画布。
【问题讨论】:
-
还有其他原因导致您描述的重新渲染。我创建了这个简单的 jsFiddle (jsfiddle.net/wiredprairie/amq1t7jc),它创建了一个画布,然后每 16 毫秒覆盖一次画布。由于未重新创建画布,它不会闪烁。
标签: javascript html canvas reactjs