Working with ReactJS and HTML5 Canvas
Working with ReactJS and HTML5 Canvas
我有一个根组件渲染<Particle />
组件和<Particle />
组件渲染功能是:
render: function(){
var data = this.props.data,
canvas = document.createElement('canvas'),
context;
canvas.style.position = 'absolute';
canvas.style.top = data.y + 'px';
canvas.style.left = data.x + 'px';
context = canvas.getContext('2d');
context.drawImage(data.img, data.x, data.y, data.tileSize, data.tileSize, 0, 0, data.tileSize, data.tileSize);
return canvas;
}
返回以下错误:
Uncaught Error: Invariant Violation: Particle.render(): A valid ReactComponent must be returned. You may have returned undefined, an array or some other invalid object.
我看了看Flipboard的react-canvas
,但我找不到任何与我的情况相似的好例子。
您应该只返回一个带有对它的引用的单个canvas元素。这个元素与DOM节点不同;React使用JSX将其转换为React组件:
render: function() {
return <canvas ref="canvas" />
}
然后在生命周期方法中修改它:
componentWillReceiveProps: function() {
var canvas = React.findDOMNode(this.refs.canvas);
canvas.style.position = 'absolute';
// etc ...
}
你也可以在render中设置一些内联样式属性:
render: function() {
var styles = {
position: 'absolute',
top: this.props.data.y,
left: this.props.data.x
}
return <canvas ref="canvas" style={styles} />
}
…但是context/drawimage最好放在一个生命周期方法中,因为你需要访问dom节点。
相关文章:
- IE9的HTML5 Canvas getImageData()函数存在问题
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- HTML5 Canvas访问控制允许原始错误
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- 如何在MVC5中运行时在HTML5 Canvas中显示图像
- HTML5 Canvas无法加载Kinetic.js
- 构建HTML5 Canvas/JS游戏
- HTML5 Canvas+js游戏|死亡时重置游戏更改游戏速度
- HTML5 Canvas undo是'在IE或Firefox中无法正常工作
- 在Javascript HTML5+Canvas中处理精灵鼠标点击的最佳方式
- html5 canvas toDataURL 返回空白图像
- HTML5 Canvas 的初学者,使用图层
- HTML5 Canvas drawImage ratio bug iOS
- html5 Canvas getImageData 或 toDataURL 的结果 - 占用更多内存
- HTML5 Canvas - 磨砺到停顿
- HTML5 Canvas - 使用命令数组通过上下文进行绘制
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- Html5 Canvas Javascript使我的网页链接没有响应
- Drawing asymmetrical ellipses in HTML5 Canvas using js?