我是React的新手,请帮助我理解为什么这种方法失败了。
我的App.js文件中有一个 print(#function) //for debugging
if var line = currentLine {
let touch = touches.first!;
let location = touch.location(in: self);
line.end = location;
finishedLines.append(line);
}
currentLine = nil;
setNeedsDisplay();
}
override func touchesCancelled(_ touches: Set<UITouch>?, with event: UIEvent?) {
print(#function) //for debugging
currentLine = nil;
setNeedsDisplay();
}
组件,里面有<Some />
标记。
<img>
在 <Some class="grade-wrapper">
<img src={imageUrl}/>
</Some>
组件文件中我想获取该图像,并像这样绘制画布
<Some />
但它失败并出现错误:
TypeError:无法在'CanvasRenderingContext2D'上执行'drawImage':提供的值不是'(CSSImageValue或HTMLImageElement或SVGImageElement或HTMLVideoElement或HTMLCanvasElement或ImageBitmap或OffscreenCanvas)'
我认为这个问题,因为在render() {
const getImageData = (image) => {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const size = 10;
context.drawImage(image, 0, 0, size, size);
const imageData = context.getImageData(0, 0, size, size).data;
};
const img = this.props.children
console.warn(getImageData(img))
return (null)
}
我得到了React元素而不是html图像元素。
当图像通过道具时,这可能是getImageData吗?
另外,我认为当我调用drawImage时图像尚未加载...
没有反应,它看起来像this